Tech posts - what would you like to read about?

We’ll be writing about more tech stuff in luxe soon, so I’d like to hear your thoughts on what you wanna read about? The last one was about the precision number dial.

One thing people have asked about a lot is the UI system, which is a good example to do a technical post on how it works. The other is the Entity/Modifier System stuff (read the gist here).

Those are good topics, but I’m interested what you enjoy reading about most!

At some point, a post (or probably multiple) giving an overview of the engine’s internals would be great!

yea! but which aspects are interesting to you at first? Since there’s many topics in there :sweat_smile:

Oh, right lol. I think a tutorial for beginners on how to navigate the engine and what to expect from it would be a good place to start. Something for the beginners that will cover the basics of getting started.

ah yea, so in the documentation (of the closed beta) there’s already a tutorial, it covers a bunch of stuff:

This is blog posts about the tech behind the engine that isn’t documentation per se :slight_smile:

Ok! I don’t have much of a preference, then. Go with the majority I suppose

1 Like

I would love to see some details about expanding/customizing the editor :slight_smile:

1 Like

That’s a good idea @gianmichele , or covering how it works in general cos there’s interesting design challenges that come from not making the built in stuff special compared to custom stuff.

One thing I always look for first in an engine is how to set up pixel perfect sprites/cameras/etc.

That’s a good option! I can share how it works here so long.

There’s project outlines where you choose e.g new project → pixel art, then the template asks for specifics to that template. It will configure the new project ready to go. The template itself offers a bunch of options without having to re-implement it, though of course you can if you know what you need!

1 Like

Oh, and best practices for (de)serialization.

ah yea serialization is a good technical one. Do you mean on the user space? Like save/load? Or engine level stuff?

Save/load mostly (I also like making tools, so I guess that would include topics like saving out custom files or images?). It’s something most projects will need to touch on eventually, and it’s invariably less painful to plan for it rather than try to patch it in after the fact.

So luxe comes with a save system that works the same on all platforms as a starting point.

 //create a save profile
  var save = Save.create("organization", "game")
  //load the profile
  Save.load(save)
  
  //Set some values
  Save.set(save, "key", "value")
  //Get some values
  var name = Save.get(save, "name", "default_name")

It also has save load of files, like:

Save.file_exists(save: Save, file_id: String)
Save.set_file(save: Save, file_id: String, file_contents: String)
Save.get_file(save: Save, file_id: String)

And it automatically handles save slots, and user IDs (e.g steam specific user saves on the same PC).

  var userID = //get from steamworks API
  var slot = 0 //get from save/load UI in game
  var save = Save.create("organization", "game", slot, userID)

Two things I’ll be adding to it soon

  1. save/load screenshot which will do just that and
  2. there’s normally a callback associated with async saving (consoles, background auto saves etc) that will come in time.

Also something I can share here so long and could be an interesting post for the user space.

As a technical post, I think something explaining how the string/uuid/hashing system works and is used across luxe might be an interesting thing to talk about; it’s quite different to how some other engines do it and might be a useful point of reference for people wanting to dive deeper into some of the functionality the engine offers.

Somewhat related, an article about how the engine does its asset loading and how best to write games to take advantage of the performance characteristics of luxe might be super useful, i.e. ‘Does instantiating a prototype give a performance hit?’ and ‘When are my shaders (un)loaded.’ etc.