Pinned toot

I made a tool / meta-language compiler to assist with the authoring and usage of Hierarchical State Machines. It generates raw, compact, self-contained and dependency-less C++. As such it requires nothing else for end-point compilation; no mandatory lib or include, just the compiled version of each of your graph. See README.md for details.

github.com/strstr/ServoSM

This snowfall is beautiful, large snowflakes crisscrossing in several directions.

strstr boosted

combine over-scoping with performance anxiety and you got yourself a great setup for paralysis by analysis.

divide and conquer : isolate a single issue or goal and solve it in a simple way, learning as you go if needed. only then consider revisiting it for "elegance".

With some reluctance, but then very conclusive initial results, we created the language's prototype and then its compiler.

ServoSM already meets all three of these criteria as well or better than any other solution encountered so far, with plenty of room for improvement.

It also handles portability better than most solutions.

Debugging and tracing is essential to proper state design and iteration. Since the whole point of state graphs is to model control flow, observing that control flow in action first hand should be a development priority. Most solutions encountered so far fail at this, and/or require significant tooling effort to integrate.

There are many ways to declare hierarchical graphs, see boost::fsm, etc. None of them feel even remotely comfortable, except maybe a peculiar use of precompiler macros, which usually come at the cost of the next point.

Prior experience had us believe that code generation was the only option to reach high performance, so it was generally accepted very early on, as evil as it may be. In fact, it turns out compilers are fond of optimizing state machine code: simple comparisons and jumps (branching) with very little stack requirements.

Try as we might, with a classic API (or macros) we never managed to achieve the following three criteria all at once :

-an absolute minimum of CPU overhead; better, equal or near-equal to a user's manual state management (state bools and enums)
-a clear, declarative markup language for a state graph
-ease of debugging and tracing

I wrote documentation for nine hours straight my eyes are bleeding

I made a tool / meta-language compiler to assist with the authoring and usage of Hierarchical State Machines. It generates raw, compact, self-contained and dependency-less C++. As such it requires nothing else for end-point compilation; no mandatory lib or include, just the compiled version of each of your graph. See README.md for details.

github.com/strstr/ServoSM

So the coding tool I am almost ready to deploy ended up organically with the name Servo Hierarchical State Machines, or SHSM. Do I pronounce it Shazam? Schism? Shoesm?

strstr boosted
strstr boosted

Mon ami David a donne un talk sur la préservation du son et de la musique de jeux vidéo, avec Fanny Rebillard.
youtube.com/watch?v=esWYd8czyJ

strstr boosted

"The purpose of video games is to make the player feel awesome. It is not for the designer to feel awesome"
seanmalstrom.wordpress.com/201

strstr boosted

re: Software Disenchantment
I'm often frustrated too about the state of software performance etc, but on the other hand it's never been easier to build some exciting stuff.
Like, you are within couple of docker commands from experimenting with some quite sophisticated stuff in a secure environment without breaking half your packages or compiling something obscure.

news.ycombinator.com/item?id=2

Show more
Merveilles

Revel in the marvels of the universe. We are a collective of forward-thinking individuals who strive to better ourselves and our surroundings through constant creation. We express ourselves through music, art, games, and writing. We also put great value in play. A warm welcome to any like-minded people who feel these ideals resonate with them. Check out our Patreon to see our donations.