Solar2D Logo

The genesis of the project

The first hour, the time for technical choices.

When you decide to make a video game on a mobile phone, then you have a crucial choice to make regarding the language and / or the framework you are going to use.

  • Which one will allow you to complete your project?
  • Which one isn't a huge gas plant?
  • Which one will not require months of learning?
  • Which one has a community that can help you if needed?

What is certain is that if you are not a big team, you are not going to be able to develop two different versions of your game for iOS and Android (and possibly other platforms). You will therefore exclude native languages for the development of your game and orient yourself towards a game engine that will take care of the compatibility of your game on different platforms.

The two flagship game engines at the moment, the most used ones, are clearly Unity 2D and Unreal Engine .
These two engines are very efficient and fast. The incredible number of games produced with these engines guarantees that whatever you want to do, you should get it!

Their main advantages are that they allow you to produce both 3D and 2D games.
However, there are plenty of other engines available, especially if you want to make a 2D video game. Solar2D (formerly Corona SDK) is one, but other choices are possible: Löve2D , Godot , Defold ,…

For Hillgreen, the choice was quickly made. Manu already knew Solar2D . He had wanted me to test this framework for a long time. I admit that at the beginning, I was a little perplexed, I thought that Solar2D was a kind of evolved Flash which did not allow to achieve much, but as of returning from vacation I am still in good shape. mood: One morning in November, I therefore decided to install Solar2D .

Solar2D

It's very light!

By this I mean that Solar2D does not install (or force you) any incomprehensible IDE. If you're used to using a text editor to program in another language, you might want to keep it! I have been using UltraEdit for centuries. So I appreciate this choice. If you remember the loneliness you felt the first time you launched xCode or Android Studio, you'll probably understand what I'm talking about!
Solar2D still recommends that you use SublimeText because some extensions have been coded for this editor. But nothing obliges you to use it, besides me I stayed with UltraEdit.

Project creation is fast!

Once again, lightness reigns in project management!
When Solar2D creates a project, it only creates 4 files and 3 folders for you (these folders are only used to produce Android and iOS executables, and you won't go into it to see what's going on. there before you are ready to publish your program on the Apple and Google stores).
So you'll feel like you understand what you're doing, and that's always nice!

First program

Once these first two satisfactions have been digested, it's time to go get a tutorial on the Internet to find out what the beast is up to.
Solar2D is programmed in Lua which is, let's face it right away, one of the least efficient languages! Lua offers performance similar to that of Python. That is, it is between 80 and 100 times slower than C!
Suffice to say that this point should be taken into consideration when choosing a framework! You won't be doing matrix multiplication or any complex calculations with Lua!
Lua's syntax is also a bit confusing, but we got used to it pretty quickly!
Solar2D offers several tutorials on its site which allow you in a few minutes (say an hour if you want to understand everything) to carry out your first programs.
The code is synthetic and a few lines of code will allow you to do some very interesting things. This is the whole point of Solar2D . It's quick and easy to learn.

Obviously, you will not understand everything right away and as you measure your progress you will realize certain parts of your programs could have been better coded, but you will be programming very quickly, especially at the beginning!

The emulator

Solar2D comes with an “integrated” emulator.
As soon as a file is saved in your project, your program is rerun in the simulator almost instantly. Again this is so much nicer than having to recompile and wait to test.
If you program in HTML, then you know that as soon as your file is saved, you just have to do F5 on your browser to refresh the page and immediately see your changes, and well there, it's the same except that you do not have not even to refresh the page, it does it all by itself!
Languages like Flutter or React Native, which are much more efficient, offer real-time update systems, but to know these two languages and their respective "Hot Reload" system, I would say that nothing is as successful as Solar2D in this area. It should be noted that Unity2D ** also performs this type of instant update.

It molds or not! That is the real question !

So far, what I can say that Solar2D is that it is a very good Game Engine to start programming, because it is very simple. My 12-year-old daughter who also wants to start programming (to do like her father 😊) installed Solar2D and followed the first tutorials (after I translated her into French !!!) without too many worries. She was very happy with the result, of course!

A little research on the internet for a benchmark or something that allows me to know what can be done with solar2D leads me to the small example of Markus Ranner :

How to check the actual frame rate (FPS) with Corona SDK

I therefore test the proposed code.
And that's the good surprise, both on the simulator and on my phone (because making an Android apk only takes a few seconds). It’s pretty quick.

However, showing squares that have no interest in making a Super Mario Bros U-style platform game, I tweak the code a bit to make it simpler and show 128 * 128 pixel sprites instead.

I take this opportunity to simplify the code a bit and I get the following result:

  • At 60 FPS, it is possible to display 2000 sprites
  • At 30 FPS, it is possible to display 3600!

So here we can ask ourselves the legitimate question: Why can't we display twice as many sprites at 30 FPS as at 60 FPS? Mystery...
The strangest is yet to come! Whether the sprites are 32 x 32 pixels, 128 x 128 pixels or 512 x 512 pixels, the performance is almost the same! There too, mystery.

In any case, it seems that 2000 sprites are more than enough for our project (I hope I'm not wrong!)
In fact, whether you're using Unity2D , Unreal Engine , Solar2D , or any game engine, you should get pretty much the same results (I guess), because all use OpenGl for drawing polygons or sprites. The engine does not do much once the plot has started and above all the language used is no longer of any importance.

The choice of one engine or another will therefore depend on the language used (keeping in mind that the engine is not developed in this language) and the possibilities offered by the rendering engine. And there, unless you master them all, the choice will be difficult to make!

The day ends

At the end of the day, and although I have some questions about Lua's performance, it's ok for me. We can get started in our project with Solar2D !
In any case, at this stage of our adventure, what we want above all is to code a platform game. We are very enthusiastic, and regardless of the tool, we want to get started!

I give you below a small summary of the strong and weak points of Solar2D .

Advantages

  • Lightweight rendering engine that does not impose any tools on you.
  • Very easy to use.
  • Concise code!
  • Track performance.
  • Ease of production of an executable for Android or iOS.
  • Small community but with a few active members who can help you (including me 😊).
  • It's completely free.
  • It's open source.

Disadvantages

  • Lua, it's slow and object programming looks like a patch stuck on a procedural language.
  • Few users in France.
  • Maintained by a few people only!

One more thing!

Solar2D can also produce code for Windows or for your browser, so I produced a snippet of my little benchmark (ok, it's more of Markus Ranner's) that you can find and test ([[( @ # 0, "here")]]). You are free to collect it and do what you want with it.

It should be noted that I had to set 30 FPS for the web version as it does not appear that browsers are able to display at 60 FPS.


Commentaires


Hillgreen Dream Team

Etienne: Développeur
Manu: Graphiste et développeur
Luis: 3D Graphes et animations
Reynald: Musiques et sons