The game's soundtrack is available
You can freely listen to the game's soundtrack on Peertube (and soon on YouTube, the upload is in progress but YouTube has certain limitations so it takes a while).
Superfluous Returnz on a French radio
The day after the release of the game, I was interviewed about it in Libre à vous!, the April show on the French radio Cause Commune.
Superfluous Returnz is released!
Not much more to say, the title speaks for itself! You can now buy the game on Steam or Itch.io (on Google Play, I'm still waiting for the app to be validated, so you'll have to wait a bit more).
I finished the game yesterday afternoon when I integrated the very last sound effects. The conclusion of a 3 and a half year work is approaching!
The Issue with Transparent Pixels in Anisotropic Filtering
In the series of problems that I never imagined I would have to deal with when I started developing this video game, I present to you: the problem of transparent pixels in PNG.
Le Blues de la station service (Gas Station Blues)
Having almost finished the game's graphics (apart from a few cinematics), I'm in the middle of recording the music. So I thought I'd show you one, like that, as a little extra teaser.
Vsync: the correct way to refresh the screen using SDL2
If you read a tutorial on how to handle display with the SDL library, chances are it sums it up as a loop: perform the computations for the “logic” of the game (moving the characters, etc.), invoke the display functions, refresh the screen, then put the program to “sleep” for a while.
Except that this method is obsolete and we can do much better ... let's see that.
How I (almost) fucked up half a day's work
A little feedback on a big blow that happened to me this morning ... and on how I ended up solving it. This is not a usual making-ofs article, but I think that this experience could be useful to others.
So far, I've mostly made blog posts to explain the development of the game, but for once, this is just an announcement post: after months of work, I have finished the game's graphical basics! 🎉 🎉 🎉
As you may or may not know, I'm French and I'm writing the story and dialogs of Superfluous Returnz in the French language. But fairly early in the development of the game, I thought it would be nice to be able to translate it, especially in English, just in order to broaden the potential audience.
So I'm going to talk to you about internationalization, or i18n for short. As the game does not have any recorded voices to date, it is mainly a question of translating the texts… and a few images.
An efficient image format for SDL
Superfluous Returnz is a 2D video game with a very classic “cartoon” style: if we put aside the descriptions of the levels and the sound part, the entire content to be loaded therefore consists of 2D images (the animations being simply successions of images).
In order to avoid excessively long loading times between levels and an overly large memory use on disk, choosing the right image format is therefore critical.
I'm very proud to present the official trailer for Superfluous Returnz!
A critical part of video game development that is rarely discussed in “classic” programming courses is the management of assets, i.e. game data (levels, images, sounds, etc.).
Alright, in general, we do know how to read files in C++, but here I want to talk about having an automated and cross-platform mechanism: you don't want the player to have to specify, at each launch, where the assets are ...
Linux to MacOS cross-compilation
Last time, I explained how to compile and distribute a game for Windows from Linux. This time, I'll do the same thing, but with MacOS as the target system, a procedure that is a little less well documented on the Internet.
Linux to Windows Cross-compilation
You probably won't be surprised if I tell you that I do development —and also perform all of my digital activities– on GNU/Linux. Of course, as many people use Microsoft Windows to play games, it is obvious that the game must also run on this platform.
As I'm not into the idea of approaching a Windows system without the
presence of an exorcist, I looked early into the possibility of
"cross-compiling" my game: producing a Windows-compatible executable
.exe) from a Linux environment.
The scenery: a rural French aesthetic
After a few technical articles, I wanted to do a making-of that's a bit more focused on the artistic aspect of the game. In addition, it will be an occasion to show you some images. Since most of the work I'm doing right now is on the graphics part of the game, this seems like a good time to do it.
Porting an SDL game on Android (2/2)
Last time, I discussed the whole technical aspect of “setting up” an Android environment to run our game: configuration, compilation, etc.
Now, we get to the heart of the matter: what does it change, on the code side, to port an SDL2 game on Android?
Porting an SDL game on Android (1/2)
Very early in the development of the game, I had the idea of porting it to Android: the game style (point and click) fits the platform, for example I really enjoyed playing Thimbleweed Park on tablet (and being able to play old LucasArts on your phone via ScummVM is a pleasure too).
This is one of the reasons that lead me to switch from SDL1 to SDL2 which, in addition to providing welcome hardware acceleration to display high resolution images and animations, offers Android support (and even provides quite a bit of tools to manage this platform, we'll come to that).
Superfluous Returnz is on Steam and Itch.io!
A quick little article to let you know that Superfluous Returnz is now registered on Steam and Itch.io! It will be published on these two platforms on its release date, for the moment set for June 2022 (but it is possible that this date will evolve, in one direction or the other).
For this new making-of, I'll start by reminding you (or teaching you, perhaps) several features of Superfluous Returnz:
- it is (it will be) a video game which will consist mainly of a succession of more or less twisted puzzles: pick up this or that object, use it on something, talk with this and that character, find clues, solve codes, unlock padlocks, etc. Nothing very innovative, it remains in the great tradition of point-and-click games.
- the player will evolve in an open world. I mean, don't imagine something as huge as Breath of the Wild! The number of places to visit will be much more modest, but you will be able to come and go as you please in the small village of Fochougny (even if some places will have to be unlocked), it won't be a linear succession of well-separated rooms (except for the introduction)
- it will be impossible to lose or get stuck: if you forgot to pick up an item, then it will always be possible to get it back when you need to use it (you will never need to load an older save to unblock you). Neither will any action lead to death or a dead end that would force you to reload another save. The only difficulty will come from solving the puzzles and the time it will take you to understand and solve them 🙂
The basics of a cross-platform game
From the start of the game's development, it seemed obvious to me that it had to be cross-platform: it had to run at least on Gnunux (makes sense, this is the OS I use), on Windows (the most popular OS on desktop / laptop) and on Android (the most popular OS on tablets and phones). Derivatives like LineageOS are included in “Android”. Also, I wanted to make a web port to be able to play it directly in the browser.
I will now explain to you how I managed to create these different versions using the same code base as much as possible (apart from a few adaptations, I'll come back to this).
Superfluous Returnz, playable demo
This is what will undoubtedly be the last making-of of the year before the release of the playable demo of the Superfluous video game scheduled for the end of the year.
I already discussed, in order:
- algorithms (location & moving)
- graphics (character with characteristics)
- music (musical themes)
We will tackle the last big piece that is necessary for the game: writing and storing “levels” (which we should rather call “rooms” since the game is separated into different rooms connected by doors and corridors).
After talking about graphics and programming, we are going to tackle a third facet which is: music!
Most of the musics that I'm composing for the game are ambient musics, they are relatively discreet and their goal is to provide a background sound that is neither boring nor annoying (since it loops), and that is not a distraction for the player either (the goal is to solve puzzles). Nevertheless, I still had fun composing big musical “themes”, especially specific themes for the characters. These themes will likely be used during cutscenes and transition sequences.
Characters with characteristics
Last time, I told you about the algorithmic aspect of travel: today explains how I handled the graphics part.
For this first making-of, I will present you one of the first problems I had to deal with: displaying and moving a character in a scene.