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 ... 193 194 [195] 196 197 ... 275
2911
Lix Main / Re: D/A5 port: Current status, 2016-01-18
« on: January 20, 2016, 02:00:54 AM »
Rubix: Thanks! :-)

ccx/geoo: I've beefed up the implementation with bitmap holding. (Make hardware queue drawings instead of draw right away, queue many blits onto the same target bitmap, unhold => hardware can draw faster.) This brought down measurements for the per-pixel drawing from 7 ms to 1.2 ms. I can't tell whether this is accurate, or whether gfx-work differs from this code's execution time. From watching the FPS, these numbers are in the correct ballpark.

Current implementation: There is a separate matrix for physics in RAM. Updating physics changes the matrix, and checks whether the blit can be done later in one go, or if it must happen per-pixel. Later, when updating graphics, I hold bitmap drawing, draw all masks either in-one-go or per-pixel, then unhold.

The newest versions of Allegro 5.1 don't compile on my old Debian 6 anymore. >_> A5.1 comes with hardware shaders, those look like they could simplify and speed up (drawing only on transparent pixels of the target area). The A5 folks have suggested shaders for per-pixel before, when I asked in 2011. So, that's where expert knowledge of my domain points to.

Saving the steel at start of level: That would help for terrain removers, but terrain adders still have to draw behind the terrain. Since steel-saving incurs an extra cost at start of level, but doesn't solve all questions, I haven't tried it yet. Maybe steel-saving for terrain removers, and shaders for terrain adders, would be most interesting.

However, I believe the current implementation is OK, performance-wise. If someone sends in a patch to improve it, I'd happily merge it in. :-) As a single developer, because I'm content for now, I'd like to focus on other parts of the program.

In particular, I'd like feedback from other people about bugs and performance. That's why I encourage geoo to build for Windows in the upcoming days.

-- Simon

2912
Lix Main / D/A5 port: Current status, 2016-01-18
« on: January 18, 2016, 01:42:22 PM »
Hi folks,



Current status of D/A5 Lix

I'm 90 % feature-complete for singleplayer, and 80 % done with the singleplayer-relevant menus. In the upcoming days/weeks, I'd like to compile another test release for Windows.

Physics are similar to C++ 2015-09-02 plus geoo's physics fixes: miner cancelling prevention, refined lem order when updating physics.

Playing singleplayer levels is supported, replay saving/loading is supported. Automatic replay checking is not yet supported. Reasoning: Physics change somewhat anyway, and must be refined for a while. Manual testing of physics might be most interesting. Fewer features allow me to get the test release out sooner.

Or would someone like automated replay testing right away? Anything else that I forgot, that would be helpful for the smoke test? Bug tracker of D Lix.

Benchmarking in 2015-08

In August, I have asked people to send in their benchmarking results. As it turns out, I have the slowest machine of everybody. Therefore, I haven't analyzed the benchmark results more deeply, and instead wrote code that made myself happy. If I'm content with the performance here, probably most people will, too.

If anyone wants to make nice graphs or tables, you can download the bundled raw benchmark logs from 2015-08.

If anybody want to get entrenched and optimize drawing, they're encouraged to nag me in IRC.

geoo:

I have implemented drawing to terrain with correct semantics now. In particular, these two bugs are fixed: removers overwrote steel, adders overwrote terrain.

Drawing a miner swing takes 0.1 ms when it doesn't have to check for steel, and 7 ms (= half of a frame at 60 FPS) when the mask is copied pixel-by-pixel in a manual loop. Since in that case, it would cancel, this kind of drawing is comparatively rare. Exploders not overwriting steel are more expensive. The nuke explodes one lem a time, so it's again leveraged.

I am planning some experiments with holding the bitmap drawing. I expect this to speed up the pixel-by-pixel copying. I haven't looked into that again since you wrote the benchmark code. (Explanation of benchmark modes, and benchmark code on github before I eventually removed it from the master branch.)

Once this thread has settled, towards the weekend maybe, I'd like you to build for Windows.

-- Simon

2913
My gut feeling: Zombies should not interfere with the regular spawn order at all. Zombie hatches should be a type distinct from lemming hatches. As a corollary, zombies shouldn't be counted with lems-in-hatch.

namida and I agree that this is too far a break from existing physics, so I can't recommend it. The now-dangling conclusion, not to count zombies with the hatch, might still be better than counting zombies.

-- Simon

2914
General Discussion / Re: Open source != Level design
« on: January 18, 2016, 06:25:02 AM »
No, don't know any books on aphorisms to boost motivation. My bedtime literature tends to be technical books, flower math, and books on games. >_>

-- Simon

2915
Closed / Re: [SUGGESTION] [PLAYER] Remove Option Ctrl/Right-Click Invert
« on: January 17, 2016, 09:31:13 PM »
For clarification: Like möbius, I like RMB to invert priority, not highlight the lemming.

Nepster: Thanks for the tip, how only-sound is already possible to select. I've never tried changing that option, and never found out it had 3 settings instead of yes/no.

For the longer term, I still recommend a standard options dialog over the current options menu. Let's use standard widgets like checkmarks for clear yes/no options, radio buttons for others, whatever is most appropriate. I assume Delphi is tailored towards this. :-)

-- Simon

2916
Closed / Re: [SUGGESTION] [PLAYER] Remove Option Ctrl/Right-Click Invert
« on: January 17, 2016, 06:23:28 PM »
I guess that it affects RMB only: Option no => RMB highlights lem; Option yes => holding RMB inverts priority.

Agree with reasons 1) and 2), agree wich suggestions. In particular, agree with separate option for sound, I'd use no music, but sound.

Anyone using it right now: I have set the option to yes, haven't tested what happens on no. I have bound the nuke to LCtrl. Even with option yes, LCtrl nukes.

The remapping dialog is a hackjob to get powerful hotkey mapping. It maps keys to game functions. Much more interestingly, game functions should be mappable to keys.



Simplified snippets from the source:

    if GameParams.CtrlHighlight then begin
        Game.RightMouseButtonHeldDown := ssRight in Shift;
        Game.CtrlButtonHeldDown := ssCtrl in Shift;
    end
    else begin
        Game.RightMouseButtonHeldDown := ssCtrl in Shift;
        Game.CtrlButtonHeldDown := ssRight in Shift;
    end;

Clicking on the map:

    if (Button = mbLeft) and not Game.CtrlButtonHeldDown then
        Game.ProcessSkillAssignment;
    if Game.CtrlButtonHeldDown then
        Game.ProcessHighlightAssignment;

From the function that determines assignment priority:

    if LemRemoved or LemTeleporting
            or (RightMouseButtonHeldDown and (LemAction <> baWalking)) then
        /* ignore this lem */

The names of these checks predate mappable Ctrl and mappable RMB. In this light, "switch Ctrl with RMB" becomes a more understandable option name. The option name still doesn't tell the player anything.

-- Simon

2917
General Discussion / Re: Open source != Level design
« on: January 17, 2016, 01:06:50 PM »
I was fun-browsing Wikipedia about the Euler-Mascheroni constant, read one of the linked papers, and found a lovely qoute inside: How Euler, Johann Bernoulli and Jacob Bernoulli stayed motivated and productive. (source info)
  • Always attack a special problem. If possible solve the special problem in a way that leads to a general method.
  • Read and digest every earlier attempt at a theory of the phenomenon in question.
  • Let a key problem solved be a father to a key problem posed. The new problem finds its place on the structure provided by the solution of the old; its solution in turn will provide further structure.
  • If two special problems solved seem cognate, try to unite them in a general scheme. To do so, set aside the differences, and try to build a structure on the common features.
  • Never rest content with an imperfect or incomplete argument. If you cannot complete and perfect it yourself, lay bare its flaws for others to see.
  • Never abandon a problem you have solved. There are always better ways. Keep searching for them, for they lead to a fuller understanding. While broadening, deepen and simplify.
-- Simon

2918
möbius: Thanks for pitching in with demand for this. ;-)

Quote
I think the best solution to this problem is to simply have the selection priority invert button work with not only walkers

Your idea works for mass-assigning floaters to fallers.

But a dense bunch of walkers couldn't be mass-assigned like that, because they don't stop walking after the assignment. Mass-assigning climbers to walkers is maybe more common, and would exhibit the same interaction with select-only-X.

With the current priority code, select-only-walkers or priority-invert alone can't solve the underlying problem.

I'm biased from having implemented my own solution, priorityForNewAc(). The code may be ugly, but the resulting behavior feels good.

Quote from: namida
However, a rule of "ignore lemmings the skill cannot be assigned to" may work as a fairly logical starting point.

Yeah.

-- Simon

2919
Closed / Re: [player] Mass-assigning floaters to dense bunch
« on: January 17, 2016, 12:29:14 AM »
Have 10 lems densely packed. We want to assign floaters to all of them. Select floater. a) Hover with the mouse over the bunch, and click 10 times. Alternatively, b) hold select-only-walkers, and click 10 times on the bunch.

Expected: 10 floater assignments to 10 different lems.

Observed instead: 1 assignment, both in a) and b). The game seems to prioritize the existing floater for further assignments.

-- Simon

2920
Status: Changes have been made to prioritization algorithm, see this post. Topic remains open so how to improve it further (if nessecary) can be discussed.

2921
No problem, do as you wish. Since 1.37, there is no urgency here anymore. :8():

-- Simon

2922
Huge improvement. I'm not raging anymore about forgetting the preview stats during play.

People have been asking about the rescue blink. The negative sign of the flag's number moves the digits further to the right, away from the flag, closer to the unrelated time icon.

Inspired me to draw this. Could omit the minus sign, and, after winninng, draw this winner's cup instead of the flag.

No problem adding bells and whistles to winning, you might even flash the number a couple times. It stroke me as odd to have an option for such a minor visual detail, because it lost its original purpose, notifying about the win.

-- Simon

2923
Lix Main / Re: Lix - Original Music
« on: January 16, 2016, 03:48:04 AM »
The bug in Natural Step is fixed, cool. The music builds up with much variety, without clashes now.

Crystallized Comfort: Yep, awesome track! No matter how long you're stuck on a level, don't be overwhelmed, and it's gonna be all right.

<Proxima> the new music is awesome :)
<Proxima> hmm, it ends too abruptly though, maybe hold the last note a bit longer
<SimonN> yeah, listening to it again now
<Proxima> it has a nice "easy" feeling to it, it wouldn't irritate me if it was playing for a long time on a level I was stuck on
<SimonN> right, it's calm and doesn't discourage you from a serious attempt
<SimonN> I believe I know what NaOH describes as too piercing an instrument and recommends a calmer instrument for
<SimonN> without her comment, I wouldn't have noticed it, but there is something to it
<Proxima> hmm, which?
<SimonN> the trumpets at 2:25 and again at 2:27
<SimonN> it's a matter of taste, I can see why they might be perceived as too intrusive
<Proxima> hmm, maybe, I didn't have a problem with them


-- Simon

2924
Closed / Re: [BUG?] [PLAYER] Assigning walkers and bombers to swimmers
« on: January 15, 2016, 06:31:50 PM »
1) Icho and I aren't sure.

In NL, you cannot walk-turn any of these: climber, floater, glider, detrapper disarmer. So: Not walk-turning swimmers would be consistent with all other performers of permanent abilities. Are turnable swimmers more intuitive? Icho isn't sure: Even though it breaks consistency with other permanents, turning as a swimmer in real-life is very much possible.

Assigning walker to a swimming swimmer turns the swimmer in L3, and costs a swimming tool. It's never used in L3 level design. I'd have expected the walker to act like in L3, but I'm biased from knowing L3 since childhood.

2) If it bombs, it should destroy terrain. Icho and I agree on this with you.

-- Simon

2925
Hnn, remove.

Consistency is valuable. You focus almost exclusively on puzzle solving than on execution and trial-error, and offer error-correcting control features. Timed bombers make things hard solely by execution. If Geofflems is the only pack affected, you can ask the autor for his reason -- may well be "I figured that timed is the standard."

You will lose minor mechanics: A few levels have relied on can't-bomb-during-fall-from-hatch without knowing it, and needed straightforward backroute fixes. Can't set the timer on a lem, then have him become zombie, then have him bomb amongst a zombie horde.

Yeah, people were happy in Lix, no timed skills in singleplayer. This again was inspired by NL having untimed, and recognizing that as a good idea.

-- Simon

Pages: 1 ... 193 194 [195] 196 197 ... 275