Sonder Devlog 3: Moving to Godot

If my commit history is to be believed, (which sorta is), march 19 was the last time I updated sonder on the playdate… That is because I started porting what I had to godot. And well, that enabled me to do a lot more… But just a quick reminder of what is Sonder:

Sonder is a fishing game/ slice of life game, something like pokemon with fishes meets like a dragon game series (because of the minigames). A key aspect of it is the notebook you have, where you keep notes on the fishes… You just decided you want to write about your findings and detox yourself from the city life, social media things you felt were unavoidable. So you also take pictures of the fishes you capture, learn about them, take notes and with time, you may notice you have a good book that you can publish. In the story, that publishing of the book meant the end-game. That was because the playdate would not have the power to render a pdf of your book, that you can really print in real life.

That was my main thing from the start… I really wanted to make a game where people would have something that would represent their own adventure and that they could pick in real life. The pictures you took the things you discovered, the events you took part in, all yours and well, with godot, it is possible to do that on the device. So, by a certain point in the game story, you can contact a publisher and publish your own book into the world, which signifies the end of the adventure.

That is the technical reason, but the non-technical may be more interesting:

I am living in the countryside, far away from the big city where I was born and raised, and I love it here so much… It gave me the inspiration for the game, but it also made me realize that if I continued the work of the game on the playdate, very few people would play it. Furthermore, what surprised me the most is that I got to know a lot of new people around me, and it was not uncommon to hear that they never touched a real computer in their lives. They live very happy with a smartphone to cover for all their necessities.

I am still not sure if I feel fascinated or sad about it, being that I was a NERD kid that would go to my mother’s work to use computers there… but it made me realize that I would like to have more people playing my game.

And as I am already a godot developer, moving to godot was a no-brainer and it enables me to target windows, linux, android and even web. The only blocker I had, the LOCAL pdf generation, existed no more and that frankly gave me a lot of motivation to keep working on it.

The original art direction (black and white with dithering in a couple spots) will be kept. I took my sweet ass time to make a good shader for 3d scenes and for everything else. You can see how it looks in this intro:

I converted typst (a document rendering language and tool like latex) to be a module in godot and I am happy to say that, for the past two months I can generate pdfs of the test saves for all the platforms I am targetting.

Those platforms are:

  • Windows
  • Linux
  • Web
  • Android

Mac and IOS are not considered right now simply because it is a pain to give support to those specific targets. As some positive news, I have local builds that work for mac (universal builds no less). But as I am a single dev and my main computer is a fedora linux, I cannot give good enough support for those.

I was never a fan of using online tools to convert stuff that I needed for my game on the playdate… I took around a month to develop a couple tools that would enable me to develop the game in the peace of my machine. Tus, as I had originally planned, I have opensourced a couple of those (there are more but they are so specific I doubt they have any use… like a tool to generate valid lua dictionaries from my yaml data). It should be very easy to build as it uses rust:

  • pdvenc: Converts videos (with the help of ffmpeg) or a collection of images into the pdv format.
  • pdi2img: Converts the pdi format to webp/png/bmp
  • img2pdi: Converts webp and png files to the pdi format

A big thanks to the community and in special to the incredible work done by the individuals at the repo playdate reverse engineering, as I would have never done the reverse engineering process myself.

Having said that, I plan on streaming part of the development, on youtube. I will not worry about bells and whistles because if I do, I will simply not do anything. But the plan is to show people how my game is being made. The pain of drawing, the usual pains of debugging, and maybe, the pains of composing music. I realized more than ever, that DOING stuff is the best way to get away from the algorhytim… in a place where everything seems meaningless, where you feel like it is worthless to pursue art, programming or doing anything because someone has and will do it better than you, the best way to fight, is to just do it.

Subscribe to the channel here