Skip to main content

News

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Fat Cerberus

1
Engine Development / Re: Oozaru: Sphere for the Web
It uses WebGL, performance seems pretty close to desktop Sphere as far as I can tell.  I had a perf issue a while back where it was really slow on Apple platforms, it turned out it just didn't like me reusing VBOs for Shape.drawImmediate(), even when they were created with the dynamic flag.  It ended up being way faster just to throw away the vertex buffer and create a new one next time.  But otherwise, there are no performance issues that I can see, and even that issue has since been fixed.

There are a few undocumented hoops you have to jump through in order to ensure your code runs as-is in both miniSphere and Oozaru, mainly having to do with module import conventions (they won't be undocumented for much longer, and I'm planning to add a compatibility mode to enforce them), but as long as you don't touch the Sphere v1 API, as long as your game runs on the desktop it should run fine on the Web too. That was, after all, my main goal for Oozaru.  ;)
2
Engine Development / Re: Oozaru: Sphere for the Web
Here's the above demo, now available directly on the SphereDev website:
https://oozaru.spheredev.org/
3
Engine Development / Re: Sphere 5.5.1 (miniSphere)
Just thought I'd give a quick heads up, there's an effort underway to make Oozaru a first-class member of the Sphere toolkit. In a future version the plan is that you will continue to be able to test your game on miniSphere with full debugging support etc., but the final distribution target will be fully Oozaru-ready.
4
Engine Development / Re: Sphere 5.5.1 (miniSphere)
The next big feature I want to work on is Oozaru integration. Not sure how that's going to go yet, but the basic idea is to do something where Cell can include a copy of Oozaru with the compiled project. Then you just need to find a place to host it and you're good to go.
5
The Sphere 5.5.1 development kit has been released for Windows, beginning the rebranding effort mentioned a few posts back.
6
Arts / The Porkocalypse
one day the pigs will take over the world
over the ensuing eight months and twelve days
people will begin to mysteriously disappear
its very mysterious
nobody knows how people could just disappear off the face of the earth
never to be seen or heard from ever again
it couldnt possibly have anything to do with the eaty pigs
thats just ridiculous
who ever heard of something so stupid
pigs eating people
next youll be telling me theres a giant cow that eats cats

eventually everyone will disappear
then the pigs will be done with this planet
they will move on to the next
and all the aliens will mysteriously disappear just like the humans before them
the pigs will have nothing to do with that of course
but they will nonetheless carve a trail of eatiness throughout the galaxy
while just being generally fat and pink and eaty and piggish
and nobody will know what to do
or indeed if anything even can be done
but one thing is for sure
one day
after all the intelligent life on all the planets has mysteriously disappeared
for non-pig-related reasons because why would the pigs have anything to do with that
those pigs
they are going to eat the sun

in case it wasnt obvious by now
an enormous pig eating the sun
its kind of a problem
not so much because anyone needs the sunlight to survive
because remember everyone disappeared
which of course had nothing to do with the pigs but i digress
its more just because its a frigging sun
its extremely hot
and so eating it doesnt actually extinguish it
no matter how fat the thing was that ate it
so now theres just this huge pink star with a pig nose floating around the galaxy
eating everything
because it wasnt bad enough when it was just a giant pig eating stuff
now the pig is like
five thousand degrees
and who needs that

but all hope is not lost
which i know is hard to believe
because how do you stop an invasion of eaty pigs
especially when they are fat enough to eat the frigging sun
but you can trust me on this
i have it on good authority
you see
theres a prophecy
the pigs dont want anyone to know about it
but i do
it says
there will come a day when all the stars in all the galaxies align
when all life in the universe has been snuffed out
except for one kitty-eating cow
and on the morning of the rose-colored eclipse
it is said that the cow will stand against the pigs
the cow will lose
but not without thinning the pigs ranks
only then will the pink sun rise
and the last pig fall
into a black hole
never to be seen or heard from ever again

and so it goes
that at the end of time
when everything in existence has been eaten
but not the people or aliens because that would be stupid
because why would pigs eat people
in an ironic twist of fate
the eaty pigs themselves will be eaten
and while this victory will come at great cost
because lets be honest
nothing will survive the porkocalypse
but it turns out
it doesnt matter
because as the last pig is sucked into the singularity
being such a glutton it would eat the frigging sun
the black hole will be clogged
and as the sole surviving pig struggles in vain to get free
the star in its stomach keeping it from being crushed completely
the dead cow will float over the event horizon
only then will the pig know
its time is up
and as the cow and pig are compressed
into a tiny lavender singularity
in its final moments
the pig will be heard to say
let there be light
and there will be light

thus is it left to all intelligent life in the universe
to prepare for the porkacalypse
nobody knows the time or the hour
but its coming soon
you will know the day has come
when the largest pig ever recorded
enters the atmosphere from outer space
crash-lands on earth
shows up on your doorstep
and demands to eat all the food in your refrigerator
and as if that wasn't enough
your little dog too
now you may think you can outrun the pig before it comes
by leaving the planet now
especially since its so fat
surely it must be incredibly slow
way too slow to ever catch up with the space shuttle
but you are sorely mistaken
for you see
sixty five million years ago a meteorite wiped out the dinosaurs
most think they were killed in the blast
but thats a bunch of baloney
it turns out
all the dinosaurs were eaten into extinction
which is kind of ironic
and certainly tragic
but nonetheless necessary
so at any rate
it should be coming into focus now
nobody can ever outrun the pigs
because well
they are already here

so always remember
whenever youre feeling down
because youre afraid
and its okay to be afraid of eaty pigs
dont ever let anyone tell you it isnt
someone else might just have it worse than you
because theyre the one thats going to have to tell you
with tears in their eyes
theres a pig behind you
...
🐽 *MUNCH*
7
Engine Development / Re: miniSphere 5.5.0
I don't know if anyone still even uses the forums anymore, but...

Just posted a new miniSphere version, 5.5.0, with a bunch of miscellaneous changes.  Notably the .fromFile() APIs are canonized and API level has been increased to 3.

Just as a quick heads-up, there's an upcoming rebranding: While the engine itself will continue to be called miniSphere to differentiate it from Oozaru (the Web implementation), the download itself will be renamed to Sphere. Not sure when I'm going to do this, but it'll be soon.
8
Game Development / Re: The Other Adventurer 3D
Pretty cool stuff, it's like old DOS FPSes (Doom, Wolfenstein 3D).  I forgot how low the ceilings looked in this type of game.
9
Sphere Support / Re: Map Editor Alternatives?
10
Engine Development / Re: miniSphere 5.4.2
Just posted a quick update: miniSphere 5.4.2.  A few of the currently-experimental APIs were renamed, so be sure to check the changelog to see if the renames affect you.
11
Engine Development / Re: miniSphere 5.4.0
miniSphere 5.4.0 is out.  I kind of rushed the release because 5.3 was released almost a year ago; please let me know of any bugs!

This version adds support for the .cjs (CommonJS) extension and introduces a new development.strictImports flag to game.json which forces import to be Oozaru-compatible (i.e. it forces you to include the extension for any imports of scripts inside your project), and a bunch of other enhancements.

See the release page for the full list of changes:
https://github.com/fatcerberus/minisphere/releases/tag/v5.4.0
12
This sounds pretty much like the first few text-based games I ever wrote in QBasic.  Variables?  Functions?  What are they?  It was pretty much just a long string of IF..THEN and GOTO for each relevant input :P

Of course mine weren't roguelikes.  To code a whole roguelike like that... that's impressive.
13
The first proof of concept of Oozaru is up (running the Spectacles battle engine), check it out:


Consider this Alpha 1.  I won't call it a beta, since it's not quite feature-complete yet; sizeable portions of the Sphere v2 API are completely missing and/or inoperable.  Like, the Joystick class exists, but all methods are no-ops.  And almost the entire FS API is missing... that kind of thing.
14
Programming / Re: So I wrote a monad tutorial...
Well, I mean, I do expect people reading a monad tutorial to have existing programming background, that goes without saying.  I will say that I think imperative programmers are better equipped to understand them than functional programmers actually, since we're the ones writing all the boilerplate in the first place.  Think of your Link.js library and the problem it solves :)

Programmer-to-programmer: the thing is, the monad concept itself is not actually complicated, people just make it seem that way - sure, individual monad types are complex (promises, e.g.), but the monad interface is ridiculously simple:

Code: [Select]
// entangle/unit/pure/return
let arr = Array.of(1, 2, 3);
let m = new Maybe("foo");
let prom = Promise.resolve(812);

// map
arr = arr.map(x => x * 2);  // we know what this does
m = m.map(s => s + "bar");  // maybe it has a value, maybe not - it's a no-op if not
prom = prom.then(value => newValue);  // just map to new value, no async shenanigans

// flatmap/chain/bind/thru
prom.then(result => new Promise(...));  // promise chaining
m.thru(value => new Maybe(result)); /* alternatively, Maybe.Empty */);  // maybe it can fail
arr.flatMap(elem => Array.of(...));  // one-to-many mapping

That's it.  If you implement that interface and satisfy the identity laws, it's a monad.  Literally.  That's all that's required.  It doesn't matter what kind of abstraction it's an interface *to* (promises, arrays, maybes, eaty pigs...), you just need to implement the interface.  The main thing is that the pattern this interface represents already exists in "nature"--you have to train yourself to recognize it though, and that's the actual hard part.
15
Programming / So I wrote a monad tutorial...
I recently learned what monads are, and predictably, had just as much trouble "getting it" as everyone else.  But they're not actually cursed; it's an extremely simple concept, it's just that everyone either 1) Tries to explain the mathematical background, which is not necessary (You don't need to know anything about set theory to add two numbers!), 2) Uses a bunch of Haskell code which is gibberish to imperative/OOP programmers, or 3) Starts with a box metaphor, which is just in medias res non-sequitur: you have to explain why the boxes are there first!

Long story short, I'm pretty sure I can break the curse.  Here's my monad tutorial:
https://gist.github.com/fatcerberus/beae4d15842071eab24fca2f0740c2ef