Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Simon

Pages: 1 ... 188 189 [190] 191 192 ... 276
2836
Closed / [editor] [suggestion] [ADDED] Bundle NL player with new-user-zip
« on: February 10, 2016, 01:55:55 PM »
Status: Added a copy of the player to the ZIP.



Quote
The editor has not been updated. The latest version remains V1.40n, which can be downloaded here:
http://www.neolemmix.com/old/neolemmixeditor.zip (For new users)
http://www.neolemmix.com/old/NeoLemmixEditor.exe (For existing users with older versions)

Contents of the new-user-package:
NeoLemmixEditor.exe  styles
NeoLemmixEditor.ini  ReadMe.txt


I recommend to add the NL player to this new-user bundle.

Reasoning: People get stuck on how to test levels. Improving the error message is good. Designing the error out of existence is better.

-- Simon

2837
Lix Main / Re: Try singleplayer in the D/A5 port! v0.2.17
« on: February 10, 2016, 01:02:45 AM »
Before 0.2.17, I looped manually over the image, and for each opaque pixel, I drew a transparent pixel to the target. That was a naïve implementation, mostly copied from A4 Lix. While I used calls to the video hardware, they were many, many calls per tile.

In 0.2.17, I have a fully white, fully opaque copy of the tile in VRAM. For drawing dark, I blit the white piece with a blender that deducts from the target pixels (colors and alpha) the source pixels (colors and alpha).

Now, dark drawing has about the same VRAM performance as a normal blit.

-- Simon

2838
Tech & Research / Re: Object-oriented design with Simon
« on: February 10, 2016, 12:37:53 AM »
Quote
"Transforming" a lemming into a new class seems "unnatural" to me.

Yes, I agree that the lemmings should not be replaced. Many of their fields are persistent between jobs. Objects should model the real world: if we don't think of lemmings to be replaced, we shouldn't replace them. My proposed solution is to replace the behavior object instead.

This solution is compelling in hindsight. I have described its advantages in parts 2, 3, 4. But a class hierarchy is costly, even though it's idiomatic in OO design. To justify that cost, I will compare alternatives. It's a difficult design problem, and personal preference plays a role, too.

OO with Simon, part 6
Comparison of all-in-base-class, tagged union, and state pattern


Bloated single class: You put special fields for builder, special fields for faller, ..., all into the Lemming class. They're right next to job-independent fields like position or exploder timer. All fields are mutable, and all jobs can access everything.

Widespread access to mutable fields is a concern. Whenever you have a bug, you must inspect lots of code for how it affects the memory. The compiler cannot help.

Dispatching from the monolithic class via manual function pointers (end of part 5) doesn't solve the problem of widely-visible mutable fields.

Tagged union: I assume this is meant by the Delphi cased record trick. You reserve enough memory to hold the job-specific fields for any single job, and put this as a value field (struct, record) into the Lemming class.

Even though the builder variables now sit in the same memory location as the faller variables, you get to name them per job as bricksLeft and pixelsFallen.

This even more type-unsafe than the bloated base class. You can access the builder's fields even when you're a faller. But because they're in a union, not in separate locations, you overwrite the builder's fields when you write to the faller's fields.

A feeble benefit might be speed while making a savestate. You can memcpy the Lemming to save it entirely, and copy fewer bytes in total than with the bloated base.

State pattern: This is my solution explained in part 2. We make an abstract class for the behavior, subclass it many times, then have the lemming carry a dynamically allocated object for the behavior.

A lemming can have only one state at a time. It's not possible to access wrong fields, and the compiler checks that for you.

Old state objects don't cause long-term psychologic damage to the lemming when he gets a new state object of the same type.

Sometimes, you must access fields of different state classes nonetheless, especially during transistion between states. You can use an explicit dynamic cast -- which angers the object-oriented deities --, or write lots of specialized methods. And herein lie the problems of the state pattern.

About that, I would love to ask someone stronger than me at design for ideas.

NL might not get additional skills. In that case, don't trade a debugged design for undebugged theoretical soundness. The point of a design to minimize the cost of changing and maintaining it. If you don't want to change much, keep the existing thing.

-- Simon

2839
Lix Main / Re: Spawn interval fixed per level
« on: February 09, 2016, 09:39:10 PM »
Thanks for the detailed reply.

You're making a solid point for choosing one of two extremes: Either cull the VSI, or make it well-accessible and discoverable with improved buttons. As a player, changing the SI is free of charge. To embrace the VSI, then, authors should fix the SI only to prevent backroutes, similar to imposing time limits.

When Icho was with me 3 days ago, I played a new level by him. Had the SI been fixed, I would have solved it faster. I thought the level needed VSI when it did not. If we embrace VSI, we encourage authors to keep this red herring wherever possible. This is unlike other standard settings: Choosing no time limit, no skill of a certain type, no surprisingly low save requirement, etc., all these streamline the player's pathfinding.

Having default red herrings is not bad per se, because it's a puzzle game. It makes the game more complex, but it's not unfair.

I would like to distinguish VSI sharply from framestepping, because framestepping doesn't affect physics. Since we have always allowed text-editing replays, we don't gain more control by framestepping. It improves the user experience without touching the game design.

Framestepping is not an interaction with lemmings, VSI is. They're different fundamentally, and neither justifies existence of the other.

VSI remains odd: Either it's part of the core idea, otherwise there is nothing in the fixed-SI game that suggests adding VSI. While VSI influences the fundamental, important spacing between lemmings, so would teleportation.

Yeah, in the end, it boils down to staking out the underlying design, then supporting that in a powerful way.

-- Simon

2840
Lix Main / Re: Try singleplayer in the D/A5 port! v0.2.17
« on: February 09, 2016, 08:23:21 PM »
Version 0.2.17 uploaded, with faster dark drawing.

To improve the performance of turbo-fast-forward, I'd like to try savestating less frequently during turbo. Right now, performance is mediocre, and Nepster is right that it should be faster.

-- Simon

2841
Closed / Re: [SUGGESTION] [EDITOR] Remove Oddtabling option
« on: February 09, 2016, 07:57:30 PM »
Does the L1 NL pack depend on the oddtable still? Does it see any use in other packs?

-- Simon

2842
Lix Main / Re: Try singleplayer in the D/A5 port! v0.2.11
« on: February 09, 2016, 05:03:50 PM »
Here are hands-on profiling results from my 9-year-old laptop. This is from a build with profiling, but without other debugging instrumentation. Dark drawing (eraser piece drawing) sucks. The testing map was geoo's playground, a huge map with about 10 % dark pieces.

Lix version 0.2.16 profiling results from 2016-02-09 17:49:01.
Unit of time: 1 us == 1 microsecond == 1/1000 of a millisecond.
At 60 frames per second, 1 frame takes 16666 us.
                                       avg/us   min/us   max/us   amount
Level.drawPos to RAM DARK                 269       25     3407      123
Level.drawPos to RAM NOOW                 610      418      803        2
Level.drawPos to RAM NORMAL               428       10    10693     2789
Level.drawPos to VRAM DARK              47191    39122   131871      246
Level.drawPos to VRAM NOOW               2615     2431     2742        4
Level.drawPos to VRAM NORMAL              156      142     1190     5578


The averages are average times per piece, not average times of rendering the level.

Drawing no-overwrite pieces is also slower. But the sampling rate is too little, geoo's playground uses only 2 no-overwrite pieces.

Good suggestion by namida from IRC:
<namida42> wouldn't it make more sense to test with *several* real life maps, since that's going to give a more reasonable picture of how ti performs in actual usage, rather than unlikely test scenarios?
<SimonN> yeah, I should set up some kind of automated test >_>


-- Simon

2843
General Discussion / Re: Best quotes from IRC and Mumble
« on: February 09, 2016, 12:15:38 PM »
<IchoTolot> Lemmini [...] was very unstable to tileset changes so i made a backup copy in the folder
<SimonN> pff, it eats your tiles during play :>
<IchoTolot> yes
<SimonN> that would be such a horrible bug to never let it touch anything
<IchoTolot> that's why the backup is there^^
<SimonN> it can't be that every tool is horribly broken x_X
<IchoTolot> also I have a lot of shit
<geoo> use git! :D
<geoo> even if your files are eaten, git can vomit them back out


From Mumble:

geoo: I thought you wanted to cull every skill that doesn't affect terrain.
Simon: I considered that loosely, but climbers are awesome.
geoo: Yes! Climbers and miners! Everything else can go!


-- Simon

2844
Lix Main / Re: Porting Lix to SDL, loose ideas
« on: February 09, 2016, 11:01:57 AM »
No SDL2, at least in the upcoming year. I'm too busy, too.

For a few weeks now, Lix regulars have been looking at the port, giving lots of feedback. I'm ironing out heavy problems, to get speed and better consistency with C++/A4 Lix. I wouldn't like to swap libraries at all right now.

Your case is the first substantial technical drawback of A5 compared to SDL2. Thanks for pointing it out. I view low-level graphics drawing as a black box. Did SDL2 have a similar problem, and you have written code for SDL2 to improve the situation?

-- Simon

2845
Closed / Re: [SUGGESTION] [EDITOR] Alternative copy-pasting method
« on: February 08, 2016, 09:21:13 PM »
The NL editor is a Windows program, so let's look at what is default in Windows file browsing. File or tile, keep the style. Take a while and reconcile.

Click into space= empty current selection.
Drag empty space= draw a frame to select, empty old selection
Drag empty space, hold Ctrl= frame dragging, add to selection
Click tile= empty current selection, then select the tile.
Hold Ctrl, click tile= add the tile to the current selection.
Hold Shift, click tile= Add entire range of files. No idea what it should do in the editor.
Drag tile= move currently selected tiles
Drag tile, hold Ctrl= copy the currently selected tiles to where the mouse is released

Minim's initial hunch is that Ctrl+move should copy the tiles. I'm sure many others would guess this, too. Let's make it so the users guess correctly.

Many years ago, the Lemmix editor has felt very clunky to me. Basic assumptions to how selection and dragging works turned out false.

Is there a way to priority-invert the hover, to select the hindmost piece upon click?

-- Simon

2846
Lemmings Main / Re: The Making of Lemmings (article)
« on: February 08, 2016, 10:00:22 AM »
Quote
‘I would have loved to take the characters and do something different with them,’ says Dailly.

Yeah, Sony gobbled up the rights and didn't do much with it.

Quote
Adding more stuff, as with the sequel, doesn’t make it better.

:lix-winktongue:

Quote
There is not a single element of the game that could be removed without changing the whole thing.
[...] it was already perfect the first time around.

:lix-gasp: Variable release rate, concocted percentages, and, depending on design goals, time limits. None of these have come to the writer's mind, who argued that L1 is all about small characters interacting with landscape.

We enjoy a luxury: L1 comes short mostly in usability, which is expected for a 1991 game, 25 years behind modern theory. I see far fewer issues with pure game design.

It's interesting how triggered traps are so central to the design. Besides interacting with terrain, the game is about seeing many different little animations.

-- Simon

2847
Lix Main / Re: Porting Lix to SDL, loose ideas
« on: February 08, 2016, 09:02:58 AM »
Raspberry Pi, for example, where allegro does not perform well

Allegro 4 or Allegro 5? I'd be surprised if A5 were slow on the Raspberry. A5 and SDL2 should have comparable hardware graphics acceleration. Some forum members have criticized using A5 over SDL2 because they were more familar with SDL2.

If you're feeling adventurous, build the D/A5 version that's yet in development.

-- Simon

2848
NeoLemmix Styles / Re: Tilesets based on special levels
« on: February 07, 2016, 07:35:29 PM »
Bug is fixed! Again, lovely set. It's a joy to watch the anims.

-- Simon

2849
NeoLemmix Styles / Re: Tilesets based on special levels
« on: February 07, 2016, 06:45:28 PM »
Watch out for the weasel thing...

Hnaaaah, so cute! Cutest trap in the entire game.

The weasel's cave is shaded slightly differently in the anim than it is during the still frame. Nothing else I can criticise after watching it 20 times. <3

Very interesting take on animated water. A unique style that works amazingly when constained to a coarse resolution.

-- Simon

2850
Closed / Re: [SUGGESTION] [PLAYER] Replay messes with skill UI
« on: February 07, 2016, 05:00:38 PM »
"change selected skill" sound effect should still play

Yeah, the sound plays still.

Quote
I've found it quite annoying how Lix doesn't select the skills based on the replay's actions - quite possibly as a result of being used to how (Neo)Lemmix does).

This is interesting feedback.

I've plowed through the project history. Lix replays affected the current skill until June 2015. Then, I considered it bad design in Lix, and made the skill independent from the replay.

People haven't asked for detailed justification of the change. geoo was surprised how clicks on skill buttons wouldn't cancel the replay anymore.

Do you have a strong association of (what's currently assigned on the screen) to (what would be assigned with next click)? This assumption doesn't always map to program behavior, with assignments far apart spatially, but close together in time.

Quote
will look into adding an option to ignore the replay's skill changes.

Awesome.

I don't care about what ends up in the file. Especially if you make an option, you probably want UI candy over the old replay data format. Good with me!

-- Simon

Pages: 1 ... 188 189 [190] 191 192 ... 276