Summer 2023 dev report: Not getting stuff done to get more stuff done later

It's been exactly 2 calendar months since my last post. Until I started typing I was sure it was just 1 month, but the last post's date was clear. Anyways here's the important news: I'm still not getting things done and I'm still not making any apologies. I'm not sitting idle either, though. Read on.

My previous post received one Discord comment that I just have to quote:
I hope to live to see the day when Petr realizes his audience are players and not developers. ~ Tritonas00
This brilliant jab nicely sums up everything that's... 'sub-optimal' in my communication and generally in my management of the project. I'm not arguing any of it, but sorry guys, I can't bring myself to do it differently (like make more frequent releases). Leaving out my usual dev grumbling, here's the deal in player-appropriate terms: If I started doing focused gameplay/usability improvements and fixes, I'd have no time left to fix/add the big things: shaders, performance, multiplayer collisions, force feedback, terrain/vehicle editors... I could go on. This is a volunteer-based project and I have a fulltime job already; I don't come here for additional chores, I come here to do something fun and creative. And I get no joy from making minor things while big things are rotting.

The problem is not that things are hard; the problem is that the game isn't nearly flexible enough. Basically every feature we have, be it gameplay or modding (those especially) could use some tuneup. That means making changes to code, starting the game, finding out it doesn't work (or crashes or whatever), which means additional code changes and restarts. This turnaround takes some time which quickly adds up, especially if you run under Debug as I do, making things a lot safer but also running substantially slower.

Now this situation isn't uncommon in games and there's a well established solution: scripting. Scripting basically reads "keep your game running, just modify and reload the script as often as you want - and unless there's a serious bug in the game, you'll only ever crash the script, not the game". Rigs of Rods has long had a very well made scripting subsystem, made by Neorej16 in circa 2010. A few years I began expanding it and now it can draw GUI, control the game via message queue and there's a "Script Monitor" menu in Console window with Load/Reload/Autoload buttons (and history of recent scripts). But this summer I realized I'm still losing time by switching between the game, log and text editor while fixing scripts, and it struck me how to make my workflow perfect. Please welcome my new assistant - the script editor:

1690665757026.png

I've celebrated it enough on Github and Discord #development, so I'll jump straight to "what's in it for the player":
  • Truck editor script: Just load the .truck file as string, parse it by hand, draw editorizer-like UI with DearIMGUI, save the file as string and spawn it using message queue. The simplest scheme I've tried yet.​
  • Terrain editor script: we already have road editor, and editing other terrain objects is pretty much the same thing.​
  • Mission editor script: I'm not sure what it will look like yet, possibly drag-and-drop of checkpoints/waypoints and other locations + a node-based logic editor.​
  • Animation editor: The Trackmania Nations game inspired me on this - every map has it's own intro anim with fade effect, camera fly-throughs and animated text. The track editor has a timeline for it.​
  • Overlay integration: Overlays are part of OGRE renderer and have working fonts/scaling/rotation/alignment support. The editor will bring examples of how to use them.​
  • Force feedback script: Controlling the FFB device is the easy part, the hard part is to figure how to calculate the forces from the game. This never worked well because it needs a lot of tuning. Scripts to the rescue.​
  • Driving aid script: the game is a ruthless simulator, so controlling vehicles is hard, and our limited "hydro speed coupling" has flaws. Again, it needs a lot of tuning, so it's bothersome to do any other way than with scripts.​
Again I could go on but you get the idea now... the strong point is that either of those can be worked on by other members but the core devs, and it comes with a lot of examples in the Examples menu. Yes I realize this still isn't what a player's heart desires, but it is a way to get closer, and if you can't wait for others to code your dream game mechanic, I guess bummer, you'll have to take a shot yourself. Trust me, the START/STOP button doesn't bite. :)

Yours truly
~ Petr O.
 
It's been exactly 2 calendar months since my last post. Until I started typing I was sure it was just 1 month, but the last post's date was clear. Anyways here's the important news: I'm still not getting things done and I'm still not making any apologies. I'm not sitting idle either, though. Read on.

My previous post received one Discord comment that I just have to quote:

This brilliant jab nicely sums up everything that's... 'sub-optimal' in my communication and generally in my management of the project. I'm not arguing any of it, but sorry guys, I can't bring myself to do it differently (like make more frequent releases). Leaving out my usual dev grumbling, here's the deal in player-appropriate terms: If I started doing focused gameplay/usability improvements and fixes, I'd have no time left to fix/add the big things: shaders, performance, multiplayer collisions, force feedback, terrain/vehicle editors... I could go on. This is a volunteer-based project and I have a fulltime job already; I don't come here for additional chores, I come here to do something fun and creative. And I get no joy from making minor things while big things are rotting.

The problem is not that things are hard; the problem is that the game isn't nearly flexible enough. Basically every feature we have, be it gameplay or modding (those especially) could use some tuneup. That means making changes to code, starting the game, finding out it doesn't work (or crashes or whatever), which means additional code changes and restarts. This turnaround takes some time which quickly adds up, especially if you run under Debug as I do, making things a lot safer but also running substantially slower.

Now this situation isn't uncommon in games and there's a well established solution: scripting. Scripting basically reads "keep your game running, just modify and reload the script as often as you want - and unless there's a serious bug in the game, you'll only ever crash the script, not the game". Rigs of Rods has long had a very well made scripting subsystem, made by Neorej16 in circa 2010. A few years I began expanding it and now it can draw GUI, control the game via message queue and there's a "Script Monitor" menu in Console window with Load/Reload/Autoload buttons (and history of recent scripts). But this summer I realized I'm still losing time by switching between the game, log and text editor while fixing scripts, and it struck me how to make my workflow perfect. Please welcome my new assistant - the script editor:

I've celebrated it enough on Github and Discord #development, so I'll jump straight to "what's in it for the player":
  • Truck editor script: Just load the .truck file as string, parse it by hand, draw editorizer-like UI with DearIMGUI, save the file as string and spawn it using message queue. The simplest scheme I've tried yet.​
  • Terrain editor script: we already have road editor, and editing other terrain objects is pretty much the same thing.​
  • Mission editor script: I'm not sure what it will look like yet, possibly drag-and-drop of checkpoints/waypoints and other locations + a node-based logic editor.​
  • Animation editor: The Trackmania Nations game inspired me on this - every map has it's own intro anim with fade effect, camera fly-throughs and animated text. The track editor has a timeline for it.​
  • Overlay integration: Overlays are part of OGRE renderer and have working fonts/scaling/rotation/alignment support. The editor will bring examples of how to use them.​
  • Force feedback script: Controlling the FFB device is the easy part, the hard part is to figure how to calculate the forces from the game. This never worked well because it needs a lot of tuning. Scripts to the rescue.​
  • Driving aid script: the game is a ruthless simulator, so controlling vehicles is hard, and our limited "hydro speed coupling" has flaws. Again, it needs a lot of tuning, so it's bothersome to do any other way than with scripts.​
Again I could go on but you get the idea now... the strong point is that either of those can be worked on by other members but the core devs, and it comes with a lot of examples in the Examples menu. Yes I realize this still isn't what a player's heart desires, but it is a way to get closer, and if you can't wait for others to code your dream game mechanic, I guess bummer, you'll have to take a shot yourself. Trust me, the START/STOP button doesn't bite. :)

Yours truly
~ Petr O.
That was very heartfelt and we appreciate your efforts to improve the game on our behalf. We understand that It will never be an overnight process but teamwork and synergy from all members and developers is what will help us reach our full potential. I'm currently working on a terrain for Rigs of Rods that will take some time, so hopefully that could help give a small contribution to the game when it is finished. Keep up the good work Petr.
 
Back
Top