Lemmings at a higher resolution

Started by The Doctor, May 25, 2009, 01:02:35 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

The Doctor

G'day. First post to this board in the new forums what look like the old forums, woot!

Anyway, continuing discussions on what would make a great new Lemmings game, I was toying with the idea of coding one myself, as I learn more at university. However, I'd like to know what you guys think about the major feature I want to do.

Most clones of Lemmings emulate it right down to the DOS-style VGA graphics at a loving resolution of 320x240 using al of the original graphics and so forth. While that's fine, I've become used to my PSP version and so the graphics are a bit of an eye sore.

Do you think a Lemmings clone with higher resolution graphics similar to that of the PSP, with smoothly animated objects, animated backgrounds, and so on, would fare well in our community?

I look at Pingus, and think "Now there's a good game ... missing a few bits here and there ... and the physics are a bit too realistic for my liking but ..." and then think afterwards "Can it be done with Lemmings?"

What do you think?
This Lemmings forum is simply *fabulous*!

Mr. K

This is a cool idea.  The Sonic fan community has been working on a http://forums.sonicretro.org/index.php?showforum=42" class="bbc_link" target="_blank">Sonic 2 HD, and it looks awesome.  Lemmings could benefit from its own graphics update.  We might even be able to pull in some new players to the game who thought it looked too old.

(Though, personally I like the good old graphics, but I'm a pixelphile)

Adam

There is certainly room for a high-resolution Lemmings game.

There's no reason why the existing styles couldn't be remade in a much higher resolution without keeping the feel of the original game. The PSP version looks TOO different for me to enjoy it as much as the original game.

Having said that, it took me a long time to get used to the Windows style after playing the Master System version for so long.. the Pink style completely threw me at first - it's blue, so it's pretty different. So, I think that it'd take time for players to get used to a higher resolution game, but they'd love it eventually!

Dullstar

http://www.lemmingsforums.com/index.php?topic=3.msg5#msg5">Quote from: Mr. K on 2009-05-24 19:31:16
This is a cool idea.  The Sonic fan community has been working on a http://forums.sonicretro.org/index.php?showforum=42" class="bbc_link" target="_blank">Sonic 2 HD, and it looks awesome.  Lemmings could benefit from its own graphics update.  We might even be able to pull in some new players to the game who thought it looked too old.

(Though, personally I like the good old graphics, but I'm a pixelphile)

That's true, but I'm still leaving the epic lemmings fangame just a modification of the original lemmings, with a few things added in.
No new graphics, or anything.

The Doctor

That's alright, I like the Epic Lemmings Fangame idea. New levels are always needed. Proper full sets are great, and we've been in short supply.

A whole new lot of 120 catered to an experienced community would be very lovely. http://www.lemmingsforums.com/Smileys/lemmings/laugh.gif" alt=":D" title="Laugh" class="smiley" />

And my clone will be there on the side for added fun. :-)
This Lemmings forum is simply *fabulous*!

The Doctor

Great, thanks for the feedback.

If Eric (Lemmix man!) is lurking on these forums, or 0xdeadbeef (Lemmini guy!) is around, or covox (Tundra dude!), I'd love to speak to them on AIM or MSN about how they went about their clones. Of course, theirs are more faithful but you know. I've read the documentation, looked at the Lemmix and Tundra source, and seen the documents on the LFA.

I'd like to get some first hand knowledge, however, of implementations.
This Lemmings forum is simply *fabulous*!

covox

For the love of all that is holy, don't use my engine as an example. Most of it was made up as I went along, and while I was learning the ropes. Ergo. it's pretty damn awful and fulla bugs http://www.lemmingsforums.com/Smileys/lemmings/tongue.gif" alt=":P" title="Tongue" class="smiley" />

To top it all off, pygame now finally supports bitmap masking, and the pyxml library has been officially killed off. So if I was going to revisit it I'd probably start from the ground up.

That said, the big lesson I have learned from this is to plan your engine out on paper first. As in, actual dead-tree paper; if you type stuff in, chances are you're going to use it as actual code even if it's terrible. If you draft the class and method structure out first (you don't have to write the codey bits, but have some idea how to do it with your choice of backend), then you won't get bitten and have to resort to nastyhacks to make everything work.

All that aside, I'm interested to know what sort of art direction you intend on taking with this project. One of the great things about the paletted pixel graphics was that it allowed you to suspend your disbelief about any joins between pieces; each environment looks seamless and hand-made without trying. By contrast, the PSP style of prerendered 3D objects is... well, good if you're the one prerendering the objects. If not, you have to settle for levels which look like someone going nuts with the stamp tool in Photoshop.

My favourite compromise would be something like the Mac version; low-colour, upscaled, and in the spirit of the original. Though something hand-drawn and Braid-esque might work really nicely...

(for reference: http://www.mobygames.com/game/dos/lemmings/screenshots/gameShotId,3430/" class="bbc_link" target="_blank">DOS, http://www.mobygames.com/game/macintosh/lemmings/screenshots/gameShotId,168346/" class="bbc_link" target="_blank">Mac Hi-Res, http://www.mobygames.com/game/psp/lemmings_/screenshots/gameShotId,178554/" class="bbc_link" target="_blank">PSP)

Dullstar

http://www.lemmingsforums.com/index.php?topic=3.msg162#msg162">Quote from: Jason on 2009-05-26 02:50:58
That's alright, I like the Epic Lemmings Fangame idea. New levels are always needed. Proper full sets are great, and we've been in short supply.

A whole new lot of 120 catered to an experienced community would be very lovely. http://www.lemmingsforums.com/Smileys/lemmings/laugh.gif" alt=":D" title="Laugh" class="smiley" />

And my clone will be there on the side for added fun. :-)

The Epic Lemmings Game is actually more complicated than just 120 levels; there's also going to be some more to it.  We also plan to make some modifications to the game, which is why we need help.  Most of us wouldn't know how to add Lemmings Revolution-style level unlocking.  We also want one that supports more than just 120 levels.

The Doctor

Ah, I see. So you'll be making a new custom game with support for the old styles. Perhaps Eric could make a modification of Lemmix? And of course, the source is available. :-)

I would consider it myself, except I don't know Delphi and don't really want to learn it. :\
This Lemmings forum is simply *fabulous*!

Dullstar

I looked up Delphi on Wikipedia!  It's a total nightmare to learn, from the looks of things!

HOPEFULLY Eric will mod it for us...

The Doctor

http://www.lemmingsforums.com/index.php?topic=3.msg178#msg178">Quote from: covox on 2009-05-26 12:13:33
That said, the big lesson I have learned from this is to plan your engine out on paper first. As in, actual dead-tree paper; if you type stuff in, chances are you're going to use it as actual code even if it's terrible. If you draft the class and method structure out first (you don't have to write the codey bits, but have some idea how to do it with your choice of backend), then you won't get bitten and have to resort to nastyhacks to make everything work.

Great advice. I'm not exactly sure how I should break up the game into various classes. I thought perhaps ...

Intro screen
Level cards
Victory/failure cards
Level initialisation
Level completion
Lemming state
Pick a skill
Assign a skill (if possible)
Skill implementation
How Lemmings can affect terrain
How Lemmings can be affected by objects
Terrain collision
Counters for skills, time remaining
Array for Lemmings
Lemming animation
What kills a Lemming, why
Windows frontend
Mac OS X frontend

Right track? Wrong track? Way off course?

---=--==-===-==--=---

As for graphics, the Braid-esque you mentioned is more or less on track, although much more cartoonish and without the whispy feeling.

---=--==-===-==--=---

And yes, it does. I'm happy with C# and Objective-C for now. :-P
This Lemmings forum is simply *fabulous*!

Dullstar

Yeah.  No one wants to spend hours programming.  Like I said on the old forums a lot, you could use MMF2 or Construct (recommendation is Construct).

The Doctor

I love programming. http://www.lemmingsforums.com/Smileys/lemmings/tongue.gif" alt=":P" title="Tongue" class="smiley" /> I want to build the engine myself.

I just don't want to learn Delphi hehe, re: your epic fangame idea. http://www.lemmingsforums.com/Smileys/lemmings/laugh.gif" alt=":D" title="Laugh" class="smiley" />
This Lemmings forum is simply *fabulous*!

Dullstar

Great!  Think you can start by adding some very basic stuff to the lemmings exe?

covox

That's a pretty good list of things that need doing. However, it requires a little bit of thought to properly break it down into classes. Let's assume for now, you intend to make a reasonable first step: a demo which spawns a stream of lemmings which then wander about one screen of sculpted terrain. Like the original, assume everything is done at the pixel level.

Quote
Intro screen
Level cards
Victory/failure cards
These are among the last things you'll be doing. Don't worry about these.

Quote
Level initialisation
Let's say your prototype takes a single level name as an argument.
When your program first runs, it constructs a GameState object called gs.
It then calls the gs.LoadLevel("name") method. This method should do something like the following:
 - Try to load the level data from disk and parse it into a Level data structure
 - Check which GraphicsSet the Level uses, and try to load the GraphicsSet pieces into video memory
 - Create one large graphics buffer of the whole level and paint it with GraphicsSet pieces according to the Level terrain placement info.
 - Create some sort of clever hashing mechanism for collisions based on the Level info (e.g. terrain, exits, water, traps)
After that, you can call a method such as gs.Step() (update the lemming positions) followed by gs.Paint() (write changes to the screen). This, of course, has to be repeated for every single frame.

Quote
Level completion
This happens when you run out of lemmings and you're no longer inserting new ones. At this point, your game loop should stop.

Quote
Lemming state
You have a Lemming object for each lemming, stored in the GameState object. Each Lemming will be of a certain state (walker, faller, builder) and will have a different per-frame movement behaviour based on that state.

Quote
Pick a skill
That's just input control. Worry about that later.

Quote
Assign a skill (if possible)
This is just changing the state of the chosen Lemming object and deducting one from the appropriate skill counter.

Quote
Skill implementation
This is done in your Lemming object as something which gets checked each frame. I think I figured out bits of the movement by cranking DOSBox down to 10 cycles and watching the freeze-frame edition of Lemmings. All you need to know for walking is:
- Collisions are measured at one pixel directly underneath the feet.
- If the ground ahead is between a -2 to +2 difference in height (making sure to check in the order 1,2,0,-1,-2), advance the lemming onto that bit of ground.
- Technically a lemming can jump up to 5 pixels in height, however you need to set an intermediate state called a bounder which advances up 2 pixels/frame so it doesn't look weird.
- Anything higher than 5, turn him around. Anything lower than -2, set him as a faller (which drop at a constant rate of 3 pixels/frame).

Quote
How Lemmings can affect terrain
How Lemmings can be affected by objects
Terrain collision
I can't really give advice about the best way to do collision detection, as the way I did it was pretty piss-poor (make a whole seperate RGBA copy of the level, with each of the 32 bits in each pixel representing terrain, steel, trap hotspots etc.).

Quote
Counters for skills, time remaining
Array for Lemmings
You keep the counters as variables in your GameState object. Same with your Lemmings, in an array or similar large data structure.

Quote
Lemming animation
Depends on the presentation backend you intend on using, but you'd want to load it in a globally-accessible cache much like your GraphicsSet. It's probably better for video memory to store animation in long strips, where each frame can be blitted from by using an offset and a common frame width. Lemmings is quite nice in the respect that each animation corresponds with a specific state.

Quote
What kills a Lemming, why
See collision detection. The lemming death animation is stored in the trap itself, so all you need is to make the lemming disappear and activate the trap.

Quote
Windows frontend
Mac OS X frontend
Again, these last guys depend on the language and presentation backend you intend on using. You mentioned C#; while I think it's easily the best thing Microsoft has ever made (the second, of course, being http://ski.ihoc.net/" class="bbc_link" target="_blank">SkiFree. No, http://en.wikipedia.org/wiki/Chip%27s_Challenge" class="bbc_link" target="_blank">Chip's Challenge was phoned in from Epyx and doesn't count), using the provided graphics bindings (DirectX, XNA and friends) will kick you in the nuts if your plans are multiplatform. http://cs-sdl.sourceforge.net/" class="bbc_link" target="_blank">SDL.net might be worth a look, as that can (hopefully) run on Windows .NET and OSX/Linux Mono.