An idea I batted around some towards the end of the summer: a Lemmings clone for the Prizm.

Because I want to reduce memory requirements as possible, I've been experimenting with ways to efficiently represent terrain (because bitmapping it during gameplay seems messy and inefficient), and that's about all I have to show for my work at this point.

Here's a quadtree-based painting tool designed to allow me to evaluate the efficiency of such a data structure to represent terrain, and eventually destined to become the level editor.


If nothing else, this project should motivate me to create more handy tools for Prizm development (for example, I'll need some spriting utilities), and I'll probably be able to document some previously unconsidered optimization techniques.
Sounds like a fun and challenging project, especially if it will bring us more Prizm programming tools. Now I know why you were talking about subdivisions and quadtrees on Facebook.
Hate to be off topic, but what OS is that? I don't recognize it.
CalebHansberry wrote:
Hate to be off topic, but what OS is that? I don't recognize it.

To the looks of it Tari is running Windows 8 if that is the answer to your question.
It's Windows 8.



Tari: You're welcome to cannibalize my suite of Python tools for BMP manipulation into various kinds of sprites. http://sfgp.cemetech.net/?page=ticalc&cat=partial
Luke, he showed me Windows 8 server edition last year.

it actually looks as is microsoft is getting uglyer each year...
OK. Now that I know, someone probably could delete my posts.
Also, that is a very ugly OS compared to Vista or XP.
elfprince13 wrote:
Tari: You're welcome to cannibalize my suite of Python tools for BMP manipulation into various kinds of sprites. http://sfgp.cemetech.net/?page=ticalc&cat=partial
Hm, that may be handy.

It is indeed Windows 8; I really stopped caring about how it looked after about a week.
Tangentially related, I love Qt. That program is (excluding the machine-generated code) only 89 lines of Python right now.
Qt is great. I used to use Wx a fair amount, and that code is quite hideous comparatively speaking.
Not a lot to show for my work recently. The editor tool is a bit nicer to use, and I'm starting to muck with sprites and implementing the lemming state machine.

Just sketching some stuff out to demo the editor.

You might guess that I sketched this with node annotations off (which is correct) because it's misaligned and could be tweaked slightly to be much more efficient in node usage.

Coalescing to bitmaps is yet to be done (which will greatly improve the memory efficiency of detailed regions-- up to 20 times less memory in the best cases), but I want to hammer out the data structures to be used before that happens (which will allow it to give an accurate number for memory requirements rather than just a number of nodes in use).


I want to implement a tool to convert an animated sprite into data structures that can easily be read from within a program in a generic fashion, and that'll probably happen before I actually test any of my lemmings code. That would make it the first general-purpose utility to come out of this project. Smile

For now, some people might like to know an easy way to generate animated sprite previews from frames (using ImageMagick):
Code:
# Make a looping GIF with .25-second interframe delay
$ convert walking-*.png -delay 25 -loop 0 walking.gif
# Make a larger version for easy viewing
$ convert walking.gif -scale 1600% walking-16x.gif
Something similar should be able to decompose the GIF into individual frames. I believe ffmpeg can also be used to do so.
I have things to show off now!

Not a lot to say. I generated the sprites with a hacked-together utility of my own creation, so putting together the sprites for further actions shouldn't be difficult.
The flippy hair looks a lot better when he's actually walking than in the gif you posted above. What's next for this project?
The increased framerate is probably what makes it look better. The GIF above is 4 fps, while I was running the demo at 12 fps.

Things to do next are terrain modeling and adding to the lemming state machine (climbing, falling, dying). Then I'll need to implement terrain modification to enable additional abilities (building, bashing, mining, digging).
Been adding things to the state machine. The most important thing it needs right now is terrain modeling of any kind.

Not shown in this demo: cursor acceleration. I'll create a demo for that when I add proper cursor logic for lemming selection (it's just a dot right now).
That looks great! Keep up the impressive progress. Did you ever get coalescing to bitmaps done, as per your post from November 20th? If so, terrain shouldn't be a huge leap, right?
Holy cats, Tari, that looks great! I love the little splatting with the pixels going everywhere. How many lemmings can it handle at once?
KermMartian wrote:
That looks great! Keep up the impressive progress. Did you ever get coalescing to bitmaps done, as per your post from November 20th? If so, terrain shouldn't be a huge leap, right?
I didn't touch that, and it would have been in the editor only. Since the complexity of managing such data structures is fairly high (especially once it gets to modifying the terrain on the fly), I'm going to just use bitmapped terrain for now.

merthsoft wrote:
Holy cats, Tari, that looks great! I love the little splatting with the pixels going everywhere. How many lemmings can it handle at once?
256 lemmings max right now, but that's just a side effect of the data type I'm using for the level's population. The actual set of lemmings is maintained as a linked list, so there's no limit right now.
I may fit them into a memory pool later to save a bit of memory in pointers (and probably improve locality of reference) which would impose an upper limit (probably of 255), but for now there's no technical limit.
But do you know how many it can handle before it slows down unbearably?
No idea, since I haven't run it on hardware at all. There's a lot left to be done before I'll even be considering how fast it runs on the Prizm (and thus optimization).
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement