Report on software evolution and maintenance with NL and Lix examples

Started by IchoTolot, August 01, 2019, 03:03:58 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

IchoTolot

After finally leaving this exam block behind me and having more time now, I think this might be a good time to share a report I handed in earlier this month. :)

As I always preach about proper maintenance here, I chose the topic "Software evolution and maintenance" in a course. While I learned more about the subject, I discovered some parallels to the development steps of NeoLemmix and Lix. As a result, I used them as examples for my 30 min presentation I had to do and also in the following report I attached to this post.

In the report I go over some basic definitions and laws first. Then the NL/Lix examples will relate once to the impact of feedback on the software life cycle and how positive and negative feeback play a role here and furthermore on how competition and collaboration effect the software evolution process.
In the end, I will show how graphs on certain aspects of a program can help you to form a strategy and show an example.

Maybe some of the information in there can be useful regarding maintenance problems. ;)

Anyway enjoy reading. :)

Simon

Nice!

Indeed, the Lix algo tries to have savestates of useful phyus (= physics updates = moments in gametime).

In particular, there is always a savestate younger than a second, and another younger than two seconds, for quick take-backs of the most recent error.

Memory for savestates is not as cheap as the article might make it sound, but still cheap enough to carry several savestates of larger maps. The trick is to throw away most older savestates: The older the savestates are, the larger is the required phyu interval to keep them, and all others are discarded.

2015 Lix offered no takeback at all in singleplayer, which is perplexing because the infrastructure already existed from multiplayer, to recompute whenever laggy game packets arrived.

2015 NL had no savestates at all and recomputed from the beginning for every takeback.

2019 NL is grained looser than Lix, but keeps more overall savestates. 2019 NL is slightly less performant for undoing recent mistakes.

-- Simon

namida

NL saves a state every 10 seconds, including at frame 0, and as with Lix, eventually discards old states. States on a 1 minute mark are never discarded unless the player steps back to before them; those on a 30 second mark are discarded after 2 minutes, and the rest are discarded after 30 seconds. In all cases, these time intervals refer to time on the in-game clock, not real-life time. (17 phyus = 1 game clock second, which is a holdover from Lemmix that I saw no benefit in changing, though would have chosen a nicer value had NL been made from scratch.)
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)