Creating a basic project
In this example we will create a simple triangle. The same sample code can be used in any platform.
File organization tree¶
engine
core
libs
renders
shaders
platform
android
apple
emscripten
glfw
sokol
project
(your project here)
assets
lua
- main.lua
- main.cpp
tools
bin
binshaders
shaderlib
workspaces
androidstudio
xcode
1. Using C++¶
In Supernova file tree there is a main.cpp
file located in project/
folder. This file is used to start the game development in C++. As you can see, there is a call for supernova.h
, that will call init()
function when game started.
Edit it with the code:
#include "Supernova.h"
using namespace Supernova;
#include "Polygon.h"
Scene scene;
Polygon triangle(&scene);
void init(){
triangle.addVertex(0, -100);
triangle.addVertex(-50, 50);
triangle.addVertex(50, 50);
triangle.setPosition(Vector3(300,300,0));
triangle.setColor(0.6, 0.2, 0.6, 1);
Engine::setCanvasSize(1000,480);
Engine::setScene(&scene);
}
2. Using Lua¶
In Supernova file tree there is a main.lua
file located in project/lua/
folder. This file is used to start the game development in Lua. You can call any other Lua files by this.
Edit it with the code:
scene = Scene()
triangle = Polygon(scene)
triangle:addVertex(0, -100)
triangle:addVertex(-50, 50)
triangle:addVertex(Vector3(50, 50,0))
triangle.position = Vector3(300,300,0)
triangle:setColor(0.6, 0.2, 0.6, 1)
Engine.setCanvasSize(1000,480)
Engine.setScene(scene)
Now you can run to see the result.
Warning
If you have both Lua and C++ calling Supernova static method setScene()
, the last call will be from C++, so Lua code will not work. Use NO_CPP_INIT
or NO_LUA_INIT
macro to avoid init to be called.
For example, to build with NO_CPP_INIT
:
- CMake:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DNO_CPP_INIT=1 -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX:PATH=instdir
- Build tool:
python3 supernova.py --build --platform windows --no-cpp-init
See Building for more.
3. Running the Project¶
Considering you have built and installed the project, you can run it by going to instdir/bin
and opening the executable there.
After you make changes to the code, you have to build and install it again.