I worked on shadows this week… yet another explorative task. Rendering shadows correctly is one of the biggest technical challenges still to solve in the game, as the levels are 2D and shadows tend to give away the 3D shape of objects. The solution I prototyped is based on shadow maps. The idea is to construct, for each (point-like) light source, a shadow map. This map is basically a table that tells how far a light ray departing from that source travels before hitting the first object, for...
2024-02-15 17:03:39 +0000 UTC
View Post
This week I did an exploration around camera logic. I want the camera to zoom and move as the player explores the scene. The camera should zoom-in when the player approaches objects that need attention and should zoom-out when the player flies away. Why? Well, I find that keeping the camera zoomed-out gives a good view of where the player can/should go, but it feels rather dull. A zoomed-in view is more exciting but can negatively affect navigation. There are also situations where the camera ...
2024-02-15 17:02:56 +0000 UTC
View Post
This week I focused on tools. I am attaching a video that shows some of the stuff I did.
During the weekend I created a tool to measure how long it takes for the game to carry out various tasks. The game must produce at least 60 frames every second. That corresponds to 16 milliseconds per frame. In this time, the software needs to process input from the user, calculate the physics and render it all on the screen. The tool shows a plot of what is happening in real time. Note that capturi...
2024-02-07 18:23:15 +0000 UTC
View Post
Mostly work under the hood this week. I restructured the build system and how game levels are loaded. I am preparing the ground for the creation of a game editor, which will allow creating levels more rapidly.
I also looked into publishing a dev build only accessible to patrons. Itch has an option that allows patrons to claim their unique access key. However, this access method doesn’t seem to work for HTML games. The only thing that worked was protecting the game with a password. So....
2024-02-07 18:12:36 +0000 UTC
View Post
This week I worked on sounds. I started by looking into the software libraries that I am using to manage sounds in my engine: SDL and SDL_mixer. After inspecting the source code of SDL_mixer, I concluded that I’ll need more functionality than what this library provides. In particular, I’d like sounds to be played slower (with pitch distortion, similar to the game Braid) when objects move and experience time dilation. This means that every sound could be played at a different speed dependi...
2024-01-26 18:44:09 +0000 UTC
View Post
I’ll keep the summary short this week as I just published a lengthy retrospective post about my latest YouTube video. One thing I did this week was create virtual buttons to allow playing the game from mobile devices. This was in the TO-DO list for the next demo release that I plan to do in the next month or so. You can see the result on the video attached to this post (but I’ll end up keeping the A and B buttons only.) I think the new asset works well. It is now possible to play the game...
2024-01-12 13:28:36 +0000 UTC
View Post
A couple of weeks ago I posted a video about “Time Dilation” on YouTube. It reached ~670 views and it is running out of steam now. My former video on Length Contraction was stuck on ~50 views for the first month and slowly exploded on its second and third months, reaching 150K views. Unfortunately, I think this won’t happen for my last video. In this post, I’ll try to explain why. You could find ...
2024-01-12 13:26:41 +0000 UTC
View Post
I was mostly off during these two weeks, but I took some hours to finish the “Time dilation” video and publish it on YouTube. I used this time to shorten and improve the script, create the thumbnail and the video description. I was a bit in a hurry to do all this. I forced myself to publish the video before the New Year, being aware that I have a lot of work to do on the video game.
In hindsight maybe I should have waited. The video didn’t go well and had a poor reception. I’ll ...
2024-01-11 15:56:22 +0000 UTC
View Post
I spent the whole week working on the video. It took me one day or so to finish adjusting the assets and their logic. The rest of the week was spent animating and creating the actual video. That was truly exhausting. Partly, it’s due to the tools I am using: none. Well, it’s all software coded by myself and certain aspects are excruciatingly painful to deal with. The top pain point is timing the animations, in particular coordinating between the physics time and presentation time. I end u...
2023-12-22 22:15:09 +0000 UTC
View Post
As anticipated in my last post, this week I started working on a new video. The video will be about time dilation. It will be centered on a scenario I came up with while thinking about possible game mechanics. It is similar in structure to my previous video about the ladder paradox, but it’s for time dilation rather than length contraction.
To be fair I spent Monday and Tuesday morning completing work dragged from last week. In particular, I improved the unstable key animation and fix...
2023-12-22 21:50:36 +0000 UTC
View Post
I spent this week working on room 2 and introducing some related game mechanics: unstable keys and key fusion. Unstable keys are keys that vanish after some time. They behave like some real-world particles, say muons, and decay after some time. Similarly to their real counterparts, unstable keys take longer to decay when they move. They experience time dilation! These keys can also interact with other kinds of keys: fu...
2023-12-11 18:46:46 +0000 UTC
View Post
I started the week adding a new simple game asset to complete room 1. This is the first room and is very simple: the player needs to take a key from a key-holder and drop it into a keyhole. This opens the door that gives access to room 2.
Before starting to work on room 2, I thought I’d have a go at implementing game save and restore functionality. This will be pretty handy for future development as I can restore the game to the point I want to test rather than having to go through al...
2023-12-11 18:41:20 +0000 UTC
View Post
his week I finished the relativistic implementation of the new collision avoidance algorithm. The new code is much better than the old one. Well, this is what I expected after working on the classical proof of concept a couple of weeks back. Here is the commit message:
Author: Matteo Franchin <matteo.franchin@relativisticgame.net>
AuthorDate: Mon Nov 20 ...
2023-11-24 18:38:29 +0000 UTC
View Post
My week started working on the relativistic implementation of the new collision avoidance algorithm. I soon hit a problem I didn’t foresee: the new algorithm requires trying trajectories, evaluating them and accepting/rejecting them. While this functionality is super easy to implement for a classical point-like body (just do r(t) = r₀ + v₀t + a₀t²/2, v(t) = v₀ + a₀t), it turns out to be more complicated for a relativistic rigid body. I’ll make an attempt to explain this point. ...
2023-11-24 18:36:16 +0000 UTC
View Post
I started the week investigating changes to the collision avoidance algorithm, the code that keeps the robot from penetrating walls and doors. My aim was to improve how the navigation felt, especially close to walls where the robot could easily get stuck. I also wanted to get rid of the annoying bounces that happen when the robot collides slowly with walls. I worked for about one day on a toy classical model and I managed to significantly improve the algorithm. In the new version, assisted br...
2023-11-13 10:34:53 +0000 UTC
View Post
This week I worked on improving the engine’s graphics capabilities. The problem was that my engine was only capable of supporting 2D textures (sampler2D in the GLSL language). In the last couple of weeks I used workarounds to cope with this limitation. So - you may say - why not stick with these? Well, using “dirty tricks” was fine for the first prototype, but it is not sustainable in the long term: I will soon need to design more cells for the tiled levels. What I really need is textur...
2023-11-13 10:33:57 +0000 UTC
View Post
I started the week looking into improving the rendering of the level. I designed 6 tiles (one for flat walls, one for corners, one for the background, etc) The picture below is obtained putting together some of these different kinds of tiles (except for the door and the keyhole apparatus)

I then wrote the code to assign tiles based on the level's depth map. This was quite a bit of work. I also ...
2023-10-27 18:05:01 +0000 UTC
View Post
I spent Monday and Tuesday improving support for bitmap animations in my engine. I am using this feature to render animations on the robot’s screen. Well, you may have noticed that I included one experimental animation in the last video I posted. That one, however, was achieved by loading the animation frame by frame. With the work I did this week I can load it all from one single file. I also developed tooling to improve editing and working with animations. This will be handy soon, as I wa...
2023-10-27 18:00:07 +0000 UTC
View Post
This week I started working on object collection and the key-keyhole game mechanics. I decided to go for an easy implementation, where the key is pulled towards a docking point that moves with the player. A more physically accurate implementation would involve the player sending out information about where the docking point is (at the speed of light) and the key receiving this information and reacting to it. Such an implementation would respect causality, meaning that the key would move based...
2023-10-13 15:09:54 +0000 UTC
View Post
On Tuesday (3rd of October) I released the first demo. To me it was a big milestone, although I understand that it may feel a little bit underwhelming to others. At this stage there isn’t much to see for a lot of effort that I put into the project. Hopefully, it’ll pay off at some point. I confess this project comes with a fair bit of anxiety attached to it.
Anyway… after the release, I finally started working on developing the game further. The first game mechanics I’d like to ...
2023-10-13 15:08:38 +0000 UTC
View Post
I finally published my very first demo on itch.io. You can find it here:
https://relativisticgame.itch.io/demo
The demo is very minimal. It’s just a robot that you can move inside a room and that’s it.
The focus of this release is software deployment. There is no game, yet. Still, this release will let you - for the first time - pilot a Born-rigid body moving at relativistic speeds. Notice how ...
2023-10-03 17:43:41 +0000 UTC
View Post
Last week I got the demo working on multiple devices. These included four Operating Systems (Linux, Android, Windows, MacOS) and five browsers (Chrome, Firefox, Edge, Safari, Samsung Internet.) I found it amazing to see my software run on all these different platforms. The demo, however, wasn’t working perfectly, yet. The area where the game was rendered was too big on many of these devices. Fullscreen functionality wasn’t working well either.
I then spent the first half of the week...
2023-10-03 17:26:30 +0000 UTC
View Post
Apologies for being late with the weekly reports. I put my energies on the release preparation and on writing other posts. I didn’t have enough bandwidth to do all the writing. But the release is out of the door now (I’ll soon post about it), so here is the report for week 47, covering the period 18-22 September.
The focus of week 47 was fixing bugs in preparation for the first demo release, involving the publication of a minimalistic web-runnable executable on 2023-10-03 17:23:05 +0000 UTC
View Post
In my last post I talked a bit about the "Train in a tunnel paradox" video that I published on TikTok and YouTube a few months ago. I didn't mention that originally the video was a bit longer. Here is the initial version I published on TikTok!
As you can see, the scene opens with lamps turning on - one after the other - at the train station. They follow the music beat. I ended up deleting the video a few hours after uploading it. I realized that I made a bit of a
2023-09-28 17:45:17 +0000 UTC
View Post
October 2022 was my last month as an employed man. In November I started my new and interesting life. This means it's been almost 11 months since I started working on this project. I think it’s time for me to look back, evaluate what happened and think where to go next.
When I started, I set two main objectives for this first year:
- Objective 1: Put together one or more videos that would visualize some interesting relativistic effects.
- Obje...
2023-09-28 17:44:51 +0000 UTC
View Post
Hey Patrons!
I think I am getting close to releasing the very first demo.
This one will be super minimal. It won't be playable. The only thing you'll be able to do is move the robot. The focus for this first demo is ironing out the process of building the game and publishing it on the web.
The plan is to publish it on itch.io. I still have a few things to improve, but I hope I’ll be done by the end of next week. The ...
2023-09-25 12:45:35 +0000 UTC
View Post
This week I worked on improving support for mouse and touch devices. This was one of the items I listed in the to-do list for the minimal demo that I hope to publish soon. It ended up being all Lua coding work.
In the first part of the week I focused on menus. It is now possible to launch and select items using touch gestures and mouse clicks.
I then moved to work on a new “virtual joystick” with the aim of allowing the demo to run more nicely on mobile devices… well, only v...
2023-09-18 17:55:24 +0000 UTC
View Post
This week was a short one. It started on Wednesday, after my return from the summer vacation. I used all of it to complete the switch from matrices to biquaternion in the game. I just published a lengthy post explaining how that went. There isn't much else to report for this week.
2023-09-18 17:49:11 +0000 UTC
View Post
What’s the problem?
A long time ago, while debugging my game, I found a curious issue when using single-precision floating point numbers (floats) rather than double-precision floating point numbers (doubles). The game crashed on various 2023-09-18 17:45:22 +0000 UTC
View Post
In the past two weeks I was mostly on holiday. Well, the nursery was closed and my kid had to be looked-after full time. It was a pretty good incentive to go on holiday and spend time with our families. During these two weeks I still made some progress:
I hacked together an implementation of collision avoidance in the game. This is the relativistic counterpart of the demo I previously shared in Sh...
2023-09-06 11:23:47 +0000 UTC
View Post