Author Topic: 2018 roadmap  (Read 760 times)

0 Members and 1 Guest are viewing this topic.

Offline Simon

  • Administrator
  • Posts: 2508
    • View Profile
    • Lix
2018 roadmap
« on: March 08, 2018, 04:36:49 pm »
Hi,

Lix has progressed nicely throughout 2017, I've hit all my high-level goals:
  • Guarantee 100 % solvability for lemforum, Rubix's singleplayer, NepsterLix, ClamLix.
  • Improve the worst tilesets, throw out my 2006 programmer art.
  • Add music, ship with some free tracks, allow to add your own tracks.
  • Implement the networking mode. Play games with forumers who weren't around in 2010-2014 to play L++ or C++-Lix multiplayer.
  • Enable Linux packagers to create system-wide installable packages.
Of course, some tilesets can still be improved, the networking UI should offer spectators to view other teams' skillsets, ..., but I've still managed everything I expected.



This leaves no clear high-level goal for 2018. What should be the focus of development?

Even without one big core idea, you can help enourmously: Look through the Lix bugtracker. Its first page shows only 25 issues, please look through other pages than the first, too. What are the worst issues that I should prioritize?

-- Simon

Offline Forestidia86

  • Posts: 480
    • View Profile
Re: 2018 roadmap
« Reply #1 on: March 08, 2018, 04:57:38 pm »
Some suggestions:

Bugs:
- RAM-issue on Windows, that leads to crashes on large maps

Feature Wishes:
- Undo button for the editor
- Skill blueprints
- Better replay management (multiple issues in the issue tracker)

Then there are a couple of possible physics changes: tumbler, blocker, builder, that you seem to have planned.

Offline Simon

  • Administrator
  • Posts: 2508
    • View Profile
    • Lix
Re: 2018 roadmap
« Reply #2 on: March 18, 2018, 09:52:59 am »
Thanks for the suggestions. All four are large endeavors, and I'd attack them in this order:

Replay management: This can improve in small steps and is the easiest, even though I have to make GUI, which takes long to get right. For a selected level in the singleplayer browser, the game should offer all replays installed in the standard replay tree. On manually saving a replay, you should optionally enter a name that overrides the timestamped default name. Replays should be movable/renamable from the replay browser.

Skill blueprints: This can also work in chunks, with a dumb implementation at first that merely draws a diagonal line under the miner. More powerful blueprints would simulate physics and then visualize the result somehow without really drawing permanently to the land; this might be tricky to make efficiently. We'll see.

Undo: The original idea was to use the object-oriented command pattern for this, but the code is expensive to refactor towards this. If I make this, it'll be a naive implementation with lots of savestates. We'll have to measure RAM, but since these savestates (levels) won't eat any VRAM, there should be no swap-to-RAM-then-crash here.

RAM crash: This is the hardest to fix because, to my knowledge, I must hack the VRAM map apart into several VRAM bitmaps, and then savestate only the changend parts. This will touch a larger chunk of already-complicated code. I'm considering to defer this because our workaround -- avoiding gigantic maps -- is sad, but at least it has prevented all crashes during the 2018-03-11 session.

-- Simon

Offline geoo

  • Administrator
  • Posts: 1304
    • View Profile
Re: 2018 roadmap
« Reply #3 on: March 20, 2018, 05:04:47 pm »
The one thing I've been wanting to see for a long time (and that has been discussed multiple times) would be neutral lixes, and individual pre-placed lixes.

Thread on gameplay: https://www.lemmingsforums.net/index.php?topic=2899.0
I think there the conclusion was to have the following rules: if there are neutrals on the map, only neutrals count. Together with the current rule of instant nuke if overtime is 0 this would also emulate the "Capture the Clone" mode from Clones. In singleplayer I presume we'd want everyone to count?

Thread on level format: https://www.lemmingsforums.net/index.php?topic=3226.0
As mentioned there, the simplest option is to keep the hatch rotation as before, and have a special hatch version for neutrals. Either with a separate field about number of neutrals to spawn per hatch, or just having the same number of neutrals as player lixes. (In the editor, there could be a neutral copy of each hatch.) The other option was have each hatch indicate which player it belongs to, and save that in the level format. (Priority keys change the tribe of the hatch, including neutrals.) It'd make the editor a bit more user friendly (with no other hatches changing tribe when you change the tribe of a hatch), but would need extra code for backward compatibility. I believe there was also a proposition (especially in view of asymmetric maps) to give each hatch also its own lix count and spawn rate, but that would probably be a UI nightmare and could be reasonably substituted for with pre-placed lixes.

Pre-placed lixes in the level format and editor: Same as hatches, in that it could either use the rotation system + special identifier for neutrals, or store the tribe for each lix.

Offline Simon

  • Administrator
  • Posts: 2508
    • View Profile
    • Lix
Re: 2018 roadmap
« Reply #4 on: April 11, 2018, 10:43:15 am »
Neutrals and individual lixes: Yes, especially neutrals are the most promising physics addition. Both require physics and format changes. Ideally, I'd merge the tumbler rewrite from summer 2017 into the next physics version, but I would like better physics unittesting before I merge the tumbler rewrite. The yak is hairy.

The danger is that I postpone physics indefinitely.

-- Simon

Offline Simon

  • Administrator
  • Posts: 2508
    • View Profile
    • Lix
Re: 2018 roadmap
« Reply #5 on: November 05, 2018, 02:40:56 pm »
Half a year has passed. Many things happened in 2018, among them many Lix bugfixes. Most of them were smaller issues, not at all related to to the big issues in this post. But let's see.

Replay management: Since 0.9.19, in the singleplayer browser, after you have highlighted a level, you can choose "Load Replay" for this exact level. A dialog, RepForLev, appears, and lists all replays from the replay directory whose filename starts with the chosen level's filename, then have a dash -. RepForLev is fast: It doesn't have to open any replay files to generate its list. It merely looks at the directory tree entries.

RepForLev allows no hotkeys, you must use the mouse to select one replay, even if there's only one hit. Hotkeys would be nice. Unrelated to RepForLev, the normal replay browser still cannot move or rename replays. That might be nice, but you might want to use your regular shell/filebrowser anyway to move several files.

Skill blueprints: Demo video of skill blueprints. It looks sophisticated, but it's not in releasable quality yet:
  • This is comparatively expensive to compute. I allocate an extra level-sized VRAM bitmap for the blueprints. Even though that's permanent,  I have to target/untarget that at least once per drawing. It dents the performance.
  • It doesn't cover all skills yet: It doesn't draw any terrain changes for cubers or ploders.
  • It draws the removers' blueprints even where there is already air. I'd prefer to only draw it on terrain. That requires changes to some low-level algorithms.
  • I like the previewed pose of the lix after the skill has run out. But stopped terrain removers get hidden behind the blueprint.
I'd like to improve it it before I release. I could hide it behind a disabled-by-default option, but hmmm, it feels very very beta even for that. Still, I'm happy to have made some progress here.

Undo in the editor: Nothing.

Neutral lix, preplaced lix: Nothing. I still have the physics changes since fall 2017 on the backburner.

RAM crash: I hope that we can eventually build a 64-bit Windows binary without relying on MS Visual Studio. In 64-bit executables, the D garbage collector believes far less often that some unrelated memory is a pointer into the garbage collector's managed memory. Thus, the GC frees its managed memory memory more consistently.

-- Simon
« Last Edit: November 05, 2018, 02:52:06 pm by Simon »