Meet A Dev - Christopho maker of Solarus - Zelda like Lua based Open Source RPG Engine

Are you a gamer? Do you like to play, make games? You must have heard of a green character (not the Christmas elves) who is often referred to as Zelda, but in reality his name is Link while Zelda is the princess. That was the fun fact of the day. If that went on a tangent, then you are probably unaware of the Legend of Zelda series made popular by Nintendo. This was what a lot of kids played before Pokemon and in 8-bit monochrome. Today we are in conversation with Christopho, a French developer that has created an open source RPG engine that can run Zelda like games and uses Lua as the language to script your own adventures

Personally, I love everything Lua and Swift, I had not been aware of this game engine called Solarus. It was written in C++ and uses Lu as the scripting language. I recollect from many game forums, developers were trying to create RPG like games writing their own engines and at the end struggling as it would run on mainly iOS and Android. Solarus works on practically anything you can run it on, Desktops (PC, Mac, Linux) Mobiles (iOS, Android, Windows) anything that supports SDL and you can compile for that platform.

Let us hear from Christopho about the inspirations and aspirations for the Solarus engine.

Q: When did you start on the Solarus project?

The Solarus engine ( and quest editor were started in 2006. I decided to write my own 2D Zelda-like game engine from scratch because before that, I was making Zelda fangames with game creation software that do not include programming, like RPG Maker and Multimedia Fusion, and at some point there were too many limitations for what I wanted. Still, a full version of Zelda Mystery of Solarus was already released in 2002 with RPG Maker.
And before all that, when I was 10, I was making a Zelda game on paper.
You can find scans of this paper version here: (tab "Esquisses").
Wow, I now realize that making Zelda games has been my hobby for 20 years!

Q: What language do you use for the core?

The engine is in C++11 with SDL2, as well as the latest version of the quest editor (C++11 with Qt5). Games created with Solarus are scripted in Lua.

Q: What are the platforms that you support at this time? What about the near future?

Currently, Solarus is officially supported on Windows, Mac OS X, Debian, Unbuntu, Archlinux, Gentoo, OpenSUSE, OpenBSD, GCW-Zero, AmigaOS4 and Android. Since the project is open-source, there are a lot of other ports and probably some I am not aware of. For example it works on OpenPandora, a free-software handheld gaming console.

The Android port uses virtual buttons. I am not an expert in mobile devices but what would be better is a touchscreen gameplay system. It would be great to play games this way on Android and iPhone. I know that people also managed to make an experimental Wii port!

Q: Why did you choose to make it an OpenSource project?

One day I would love to form a community with a lot of people making games and sharing them, like Zelda Classic which is great for that. Solarus is open-source so that more people can easily contribute. Without the help of the community, we would never support so many systems.
I receive a lot of help, translations, bug fixes, ideas and new features thanks to the openness. Including improvements that we would never have done ourselves.

The GPL license protects users. With non-free software, users are prisoner of the author's good will.
This is a problem with Zelda Classic: the latest release has several years (I believe), no new version is planned and no one can continue to improve it, not even to fix bugs or make ports to modern systems. And they have a huge community!

Even the format of data files is documented in Solarus. There are people who make procedural map generation for Solarus thanks to that openness.

People can also make their own modifications to the engine and they don't need my permission to do that.
The GPL license protects me: if they publish this one day, it has to remain open-source.
See for example this video of a modified Solarus engine that supports shaders to add amazing visual effects:

Q: Why choose Lua as the scripting engine? Could you have tried JS or Python?

JavaScript of Python would also be okay. Lua is used by a lot of games including commercial ones (like WoW). Lua is light, minimal, well designed, powerful, extensible and very fast especially with LuaJIT. Calling Lua from C/C++ and calling C/C++ from Lua is easy.

Q: How many people have worked on this project?

Three people help me a lot and regularly on either games, the engine or the quest editor.
If you include all people who contributed at least once, I would say 30 people!

Q: You have made a lot of tutorials, almost about 10 hours worth in English and about the same in French, that is a lot of commitment to an Open Source project.

More and more people ask questions about how to create their own game with Solarus. I want to help them the best I can! I love making these tutorials. I receive a lot of encouragement for them so I try to keep active with one new tutorial every week. They also improve my English ;)

Q: The documentation is one of the best that I have seen even from commercial software, what do you use and how much time do you spend on documentation.

Thanks! But it still needs to be improved. There are some subtle notions related to collisions and sprite coordinates, we should take some time to make some detailed diagrams to make things more clear.

The documentation is generated with Doxygen, including the C++ code documentation and the Solarus Lua API scripting reference.

In Solarus 1.0, the Lua API has completely changed. I spent a month to only write its documentation.
But except the first time you write it, it does not takes a lot of time to maintain the documentation.

Q: Like any super hero, what is your alter ego? When you are not working on Solarus.

If you watch my live-streaming coding sessions, you will see that when I am developing something, I am actually human and I struggle a lot to make things work :)

When I am not working on Solarus, my alter-ego is someone with a lot of addictions. Addictions to chess, TV shows, seeing my friends and my family!

Q: When you started you had a vision about Solarus, where do you think you are with that vision.

The vision was people playing my own Zelda fangames.

But we actually only made two games so far: Zelda Mystery of Solarus DX and Zelda Mystery of Solarus XD, the parodic April 1st game. This is because the vision has shifted, now the vision is people making their own games!

Q: What do you have on the Roadmap that was not there earlier.

To allow people to make their own games, the roadmap includes multiple projects: a user-friendly quest editor, a very customizable engine, a lot of documentation and tutorials. All of this is new: in the first release of Zelda Mystery of Solarus DX, there was no real separation between the engine and the data. It was a game written in C++ and Lua.

Anyway, now that the new quest editor is finished, I will work more on our new game (Zelda Mercuris' Chest) and less on improving the engine and the editor.

Q: You also spend time on IRC talking to your users, how is the community around Solarus

The community is growing slowly: Solarus as a tool to make your own game is very young. Nothing comparable to Zelda Classic for example! But we now have more than 20 video tutorials in English and 55 in French, so more and more people are asking questions on IRC and every day on the forum. Some are also starting to share their scripts and their sprites!

Q: Are there any quests that are going to amaze you? some users work that you are amazed by

There are not a lot of known projects yet, but I can cite Zelda: Book of Mudora, by wrightmat. He is working on this project since the very early stages of Solarus. Back at the time, the engine was not even clearly separated from my games. So he enjoyed all the improvements and customization possibilities of each release. His game is very promising.
It is huge and seems very neat, with a lot of details and some new graphics.

Q: Are there any tips that you would want to give our readers on Game Development and Documentation.

- Don't start with a too ambitious project. If you decide to write your own game engine, then you are not working on the game. Creating Zelda Mystery of Solarus with RPG Maker in 2002 took 14 months. Recreating it in C++ later took 5 years! Because it was 3 projects: an engine, a quest editor and a game.
- Keep things open, this will only be a benefit. Contributors will bring improvements you never imagined.
- Document your code like crazy. Contributions will come if the code is a pleasure to read. (I mean this for both a game engine or game scripts).
- Take the time to refactor code when needed, in order to keep it super clean, modular and extensible. You don't have the time pressure of commercial companies when you are writing a fangame. Better organized code is also more pleasant to read and can be extended and reused later.
- Make a first incomplete release of your game with the first one or two dungeons: people will play it and encourage you.

Q: About the choice of language / platform?

Solarus can be a choice if you like programming. Otherwise, there exists a lot of tools to make games without programming, like RPG Maker, Multimedia Fusion, Game Maker and Zelda Classic.

Creating your own adventure game is a huge project, no matter the choice of language or platform. It takes years (or months if you are very fast). The hardest part, by far, is to keep the motivation during all that time!

Thank you for sharing some of your time with us.

Thank You!

Video of using Shaders in Solarus