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] 2 3 ... 148
Lix / Re: OutOfVramException
« on: Today at 12:36:28 am »
It is definite that the al_create_bitmap call to the Allegro 5 library wasn't able to return the desired VRAM bitmap. Allegro 5 calls OpenGL or DirectX behind the scenes and thereby allocates VRAM for us. Allegro 5 doesn't know about savestates, it merely knows about bitmaps. If this call fails, my code throws an exception.

Until 0.9.1, this exception flew out of the program unhandled, terminating the program and displaying the error message. On 0.9.2 and newer, I catch this exception during savestate construction, do not savestate instead, and continue the program.

-- Simon

Lix / Re: Lix stress test
« on: November 20, 2017, 11:44:18 am »
Thanks for the detailed stats! :lix-grin:

Even the good laptop suffers framerate drops at 0 lix out, hmm, but it's a very large map after all. 40 fps feel strange during fast-forward, and you might find that physics updates take variable real-time. But 40 fps should still make for a good networked game.

The VRAM usage (reported by Lix's ingame status panel) is a ballpark estimation, it might be off by 10 % or 30 %. I track all VRAM bitmap allocations, but the graphics card is free to handle the memory however it desires. Maybe it allocates more to guarantee better performance, maybe it allocates less. We don't need perfectly exact values; if we ever needed some, we should use hardware-monitoring software.

-- Simon

Lix / Re: OutOfVramException
« on: November 19, 2017, 06:06:42 pm »

This happens when your graphics card can't offer more video memory for internal savestates. Lix is really VRAM-hungry on these large maps. The workaround is to stick to smaller maps. At least you crashed only on this huge map, and not otherwise.

I know of a better algorithm that the Clones developers had for the exact same problem, but it's hard to implement.

If you update to 0.9.2 or 0.9.3, at least you shouldn't crash easily, instead the game will become slower when it can't savestate.

-- Simon

Lix / Re: Lix 0.9.3 released
« on: November 18, 2017, 04:22:25 pm »
Yep, it's #261. Fixed in the bugtracker, thanks!

-- Simon

Lix / Re: Multiplayer on Nov 11 and 18th (Saturday)
« on: November 18, 2017, 04:08:30 pm »
Multiplayer session will be in 2 hours!

--  Simon

Lix / Re: Splat rulers (feature wish)
« on: November 18, 2017, 04:47:01 am »
Thanks for the feedback! Yeah, unless we find a really smart idea, the blatant colorful bars are too distracting. I'd like to sleep over this design problem for a couple nights. I haven't merged the feature into 0.9.3 yet, it'll probably make it into the next release.

-- Simon

Lix / Re: pause on restart?
« on: November 18, 2017, 04:44:12 am »
Fixed in the released 0.9.3.

-- Simon

Lix / Re: Lix 0.9.3 released
« on: November 18, 2017, 04:43:34 am »
Lix 0.9.3 released.

:lix-cool: Download for Windows
:lix: Download for Linux 64-bit
:lix-evil: Source code
:8(): Changelog
:8:()[: Issue tracker

Optionally, extract the music collection into Lix's root directory.
  • Music: Download the music collection and extract into your Lix root dir. You can create additional subfolders in ./music/ and put your own tracks inside -- ideally as .ogg, .mod, .xm, .it, or .s3m. Lix will play a random track per level.
  • Fix #216 #261: The manual savestate function will now always overwrite the savestate replay with the current replay.
  • Improved the mouse handling on Windows, there should be fewer odd jumps of Lix's cursor over half the game window.
  • When you restart a level during pause, the game unpauses.
ClamLix isn't finished yet, and the splat ruler should not be always-on. Postponing these two features for future Lix releases, but we're working on them.

-- Simon

Lix / Re: pause on restart?
« on: November 18, 2017, 02:25:24 am »
I don't mind either restart-keeps-pause or restart-always-unpauses because I never restart. >_>

For precise early assignments, I believe you would restart, then framestep. This will pause because all Lix framesteps pause. Then it doesn't matter whether the restart paused or not. Since Proxima considered an NL issue report towards restarst-keeps-pause, there is a mismatch between my reasoning and Proxima's. Where would that be? Does the NL framestep pause?

-- Simon

Lix / Re: pause on restart?
« on: November 17, 2017, 10:22:04 pm »
I agree that pause on restart doesn't make much sense. It may be consistent to keep pause on restart because all framesteps keep pauses, but there is no use here for pause. Will unpause on restart.

-- Simon

Lix / Re: Splat rulers (feature wish)
« on: November 17, 2017, 07:52:25 pm »
See attachment: Windows build with splat ruler. The splat ruler snaps automatically to floors and ledges near the mouse cursor. Does this ruler get the job done, or is it confusing?

The splat ruler is always visible, that's probably too intrusive? But the only alternative is button/hotkey bloat. :lix-cry: Ideally, I'd like good nonintrusive overlays dependent on the mouse cursor.

Non-Windows users could find branch splatruler in the unstable github repository, ask me in IRC if you want to build test versions yourself.

-- Simon

General Discussion / Re: Kieran's Programming Beginner Questions
« on: November 17, 2017, 04:21:50 pm »
Nested classes

Nested class is a class declared inside another class:

class Editor {
    int x;
    class Nested {
        int y;

Nested classes are not inheritance. Inheritance would be wrong in the OP's design, an Editor cannot be used where a Style is required, nor can a Style be used where an editor is required.

C++ nested classes are like static inner classes in D or Java. C++ nested classes cannot access any outside object of the enveloping class. You can have an Editor::Nested and no Editor, that will work perfectly fine, it has one field Editor::Nested::y. There is no pointer to any Editor within the Editor::Nested, and there is no Editor::Nested::x because that's a field of Editor, an unrelated class.

The point of nesting is naming and possibly implementation hiding. Within Editor, the Nested is called Nested, whereas outside of the Editor, the class is called Editor::Nested. You can declare class Nested private with the usual effects: The symbol is not visible outside of Editor.

I would not use nested classes because most of the application is an editor, therefore Editor::Nested doesn't gain much over naming it Nested. But the design is not wrong either.

Everything else

The design issue from OP arises in any object-oriented language, not merely in C++.

Yes, your code in C++ gets longer than in most other languages. You can hide the allocation in wrapper structs or the standard library's unique/shared/weak pointers. But you choose C++ in the first place only when you want the low level, and have ruled out D/Rust/Crystal/... for whatever reason. Learning some C++ can't hurt either, the language is really common.

I basically brute-forced everything.

The type system is your best friend, do not betray it. :lix-scared: But yes, it requires some proficiency to become useful in the first place.

-- Simon

Bugs & Suggestions / Re: bug - object don't appear overtop
« on: November 17, 2017, 09:04:01 am »
History: NL had decoration, a.k.a. no-effect gadget. Deco was drawn on top of terrain every time. Some decoration even looked like terrain, e.g., trees and lampposts in L2 shadow. Very enraging, and Nepster eventually commented these tiles with "do NOT use" in their text-format conversions. :evil:

Fast-forward a year: IchoTolot clarified the tiles. Some of the confusing decoration is now animated, some others are replaced by proper terrain. Movable background has always been drawn behind the terrain, where most decoration should belong, too. This made decoration a special kind of moving background, moving at speed 0.

Moving background isn't a good name anymore, most tiles will be set still. The name is for clarity during conversion. "do NOT use" should vanish once the trees animate clearly.

-- Simon

Lix / Re: Flopsy's Lix Multiplayer Levels
« on: November 16, 2017, 12:42:52 pm »
I'd increase builders, too, to 30 or even 50.

Digging under hatches looks like a strong attack here. You can mitigate that by lowering hatches, putting steel under the hatches, or giving many more builders. Alternatively, you can declare hatch digging a feature of the map.

I'm hoping we can play this in the multiplayer session this weekend :)

Definitely -- I've always given priority to new maps in multiplayer sessions. Playtesting and good feedback are super important.

Next multiplayer session is Sat Nov 18 at 18:00 UTC.

You needn't send the map to everybody in advance. The game server relays the map to everybody. Post the maps once you'd like them included in the standard Lix download.

-- Simon

Non-Lemmings Gaming / Re: Simon speedruns Jazz Jackrabbit 1
« on: November 16, 2017, 12:33:58 pm »
I will run Jazz in the Shots Fired marathon tonight, with English commentary. The run starts around 17:00 UTC, that's 4.5 hours from now.


-- Simon

Pages: [1] 2 3 ... 148