Lemmix

Started by EricLang, March 22, 2023, 08:17:38 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

EricLang

Working (again) on a new Lemmix version. I quit Delphi and moved to C#.
The first results are promising, but it will take a while...
I will change the mechanics a bit (goal: "perfect" mechanics), abandon the old file formats (replace that with a home grown one), create an editor and support higher resolution.
Also I will add some settings in levels like falling with gravity acceleration. That kind of stuff.
See you later :)

Simon

#1
Good luck!

When you consider the rewrite serious enough, we can make a board here for it.

I warmly recommend to keep the new formats human-readable: Text, common image formats, grouped resources are directories (or zip files in a pinch, but plain directories are nicer).

Consider widespread text-based serialization formats such as Json, SDLang, Toml, ... When they have good library support, you and others can parse them more easily and write new tooling. Some things, in particular nested structures, are annoying to retrofit into hand-rolled serialization formats that don't support it, and one starts to borrow ideas from the more widespread formats anyway. >_>;;

Maybe consider a good new name for your project? Lemmix, or Vanilla Lemmix, stands for DOS-bug-compatible physics.

-- Simon

Mindless

Funny that you mention that you're rewriting Lemmix in C#.  I'm currently rewriting the Lemmings Level Database in C#.  (It's currently written in Python 2 and runs on Google App Engine, which is dropping Python 2 support.)  I've got level rendering working, but if you're abandoning the old file formats, I guess there wouldn't be much overlap.

EricLang

#3
@Mindless: That is interesting. Is your source somewhere on github or so? Of course I could give you my renderer if that is ever needed :)


EricLang

@Simon: Thanks I will keep us posted here once in a while.
It is always a difficult choice between readable stuff like folders, images, JSON etc.
For now I created a binary png-inspired format with all kinds of records (like graphics, levels, sounds music etc. etc.).
I chose this for now for speed reasons. Loading and saving and finding objects is ridiculously fast.
But I am still not sure... this works for now.
I don't like JSON in general except for small structures.

Mindless

Quote from: EricLang on March 23, 2023, 09:29:46 AM
@Mindless: That is interesting. Is your source somewhere on github or so? Of course I could give you my renderer if that is ever needed :)

I put some code into a repository on GitHub.

WillLem

Quote from: EricLang on March 22, 2023, 08:17:38 PM
I quit Delphi and moved to C#.

Interesting. Have you ported/translated your existing code or started from scratch?

EricLang

@Will: I started from scratch. The lemming mechanics code I translated from Delphi to C#. And then some finetuning / refactoring of course. When I have a working sample I will put it on github.

@Mindless: interesting. I will open the project and check out the details. Is it compilable?
I wrote my own home-grown png decoder. I like having no dependencies. It will be quite easy - if wished - to implement levelrendering for dos lemmings as well as Lemmix, when exposing a few C# methods to you or create a little sub-project.

Mindless

Yeah, it should be.  If you put the Lemmings game files in the "GameFiles" directory, build the project, and run it from the command line, you should be able to get it to get it to produce an image from a level file.

EricLang

This Lemmix will have no emulated bugs, and real indestructable steel.
And I have some crazy ideas like speedruns and recording these.

Also I would like to import and handle tribes lemmings, but got a bit stuck on the gamedata, although there is quite some documentation about it. The filestructure is still not clear.

607

Sounds interesting, enjoy the project! :D

EricLang

Yeah thanks it's interesting. I added some nice things already. A "high resolution" minimap which shows everything live. and "swipe" skill assignment.
Also the framerate is quite high for an old fashioned programmer like me. No hardware accelerated stuff but an FPS of 200 on a fullscreen big monitor (3840x 2160). Playing in windowed mode is also possible. On smaller screens / smaller windows an FPS between 400 and 1000. Playing only mechanics is fast as well. It can handle 3 playing hours in one second :)

The Tribes however will give me headaches :)

EricLang

I was wondering if I should convert steel area's. I think most of the steel is on these "steel" tiles. Sometimes not too precise. I could make the tiles themselves indestructable, which would be more "realistic" as far as you can speak of realism in Lemmings.

WillLem

Quote from: EricLang on April 02, 2023, 10:28:29 PM
I could make the tiles themselves indestructable, which would be more "realistic" as far as you can speak of realism in Lemmings.

If you mean what I think you mean, this is how I'd like steel to behave as well, i.e. the block itself should be indestructable.

If trolls want to hide it behind terrain, let them. People just won't play any more of their levels.

EricLang

#14
Yes I was experimenting with it, and it works a lot better. The bashers, miners and diggers detect if there was a steel pixel encountered during the removing of terrain. If one of the pixels is steel they stop. That works perfectly.
The only difficult part is the "drawmode" of the steel block (normal, eraser, not-on-terrain, only-on-terrain). I still have to find out what should happen in all these cases.



Tricky 4. Steel behind normal terrain. How to handle that one... In the original the steel is over the whole area (i think) regardless if the steel is visible.