- Notifications
You must be signed in to change notification settings - Fork8
onut. A little framework to make games in C++ or JavaScript
License
Daivuk/onut
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Commonly called "onut". Game engine focused on rapid development. Aimed at Game Jams.
vartexture=getTexture("image.png");functionrender(){// Begin a batchSpriteBatch.begin();// Draw a sprite at screen coordinates x=200, y=100 from top left corner.SpriteBatch.drawSprite(texture,newVector2(200,100));// End and flush the batchSpriteBatch.end();}
functionupdate(dt){spriteAngle+=dt*45;// Will rotate 45 degree per second}functionrender(){ ...// Draw a sprite at with an animated angleSpriteBatch.drawSprite(texture,newVector2(200,100),Color.WHITE,spriteAngle); ...}
Seeonut/samplesJS/
folders for more detailed samples.
- Global Game Jam 2020 -Arctic Distress
- Global Game Jam 2020 -Click to Repair
- Global Game Jam 2019 -Eagle's Nest
- Global Game Jam 2018 -Messenger Hacker
Ottawa Game Jam 2017 -Sheep Dog Heroes
Linux Game Jam 2017 -Retro Game War
- Ottawa Game Jam 2016 -Spy Satellite Showdown
- Global Game Jam 2016 -Fire Whisperers
- Ottawa Game Jam 2015 -Cannon Fodder Commander
- Onut 4.0 - The 3D release -TBD
- Onut 3.0 - The JavaScript release - Jul 14, 2017
- Onut 2.0 - The Cleanup release - Apr 3, 2016
- Onut 1.0 - Feb 6, 2016
- Clone onut somewhere on your PC.
- Generate using cmake.
- Build the JSStandAlone project in release.
- Copy the executable to your game's folder.
Recommended to use Visual Studio Code.
- Create a folder for your game somehere on your PC
- Copy
[onut path]/jsconfig.json
,[onut path]/typings/onut.d.ts
to YourGame path. - Create a
settings.txt
file. Refer to samples to see what can be put in there. - Create assets and javascript files
main.js
will always be the last JavaScript file executed, use it to initialize stuff.
functionupdate(dt){// Update your game here}functionrender(){}
Before you start. Please take note of the following folder structure. It is highly recommended for minimal setup time.The default asset search paths are configured for this structure.But it easy to add more usingoContentManager->addSearchPath
.
YourGame\
assets\
Put game assets in here- ...
src\
Your game source code (.h and .cpp)- .. projects files or your CMakeLists.txt
Make sure to define those 6 functions. Otherwise you will get unresolved errors.
voidinitSettings(){// Set Default game settings can be set using oSettings.}voidinit(){// Load your content.}voidshutdown(){// Cleanup.}voidupdate(){// Game logic.}voidrender(){// Game render.}voidpostRender(){// Render more stuff after post process.}voidrenderUI(){// Draw imgui debug UI.}
Look at samples to see what can be done here.
Sprite anims can be edited in Aseprite and exported as json. Certain flags can be set on frame's properties. Properties are colon ":
" separated.
i.e.: "loop:genfliph:next=idle
"
Frame properties and their meaning:
name | usage | scope | meaning |
---|---|---|---|
loop | loop | tag | animation will be looped |
genfliph | genfliph | tag | an extra animation will be created with the name tag+"_fliph", flipped horitontally |
genflipv | genflipv | tag | an extra animation will be created with the name tag+"_fliph", flipped vertically |
next | next=tagName | tag | when this animation is finished, it will trigger tagName |
origin | origin=x,y | frame | set frame origin. This will apply to subsequent frames until the next origin. |
sound | sound=step.wav | frame | plays a sound on this frame |
soundcue | soundcue=step.cue | frame | plays a sound cue on this frame |
vol | vol=0.5 | frame | set volume for sound [0, 1]. |
pan | pan=0.0 | frame | set panning for sound [-1, 1]. |
pitch | pitch=2.0 | frame | set pitch for sound. |
tags | tags=tag1,tag2 | frame | Custom tags on this frame |
When exporting the sprite sheet in json format, make sure to change "Hash" to "Array".
Logo design by Pixilabs Software Inc.
About
onut. A little framework to make games in C++ or JavaScript