Skip to content
This repository has been archived by the owner on May 11, 2022. It is now read-only.
/ AVA Public archive

A tiny unlicensed 3D game engine in C; with C++ and Lua interfaces. Written in 32 random ̷d̷a̷y̷s̷ m̷o̷n̷t̷h̷s̷ years.

License

Notifications You must be signed in to change notification settings

r-lyeh-archived/AVA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



ΛVΛ
Small game engine.
Written in 32 random ̷d̷a̷y̷s̷ m̷o̷n̷t̷h̷s̷ years.

| Features | Rationale | Getting started |
| Unlicense | Documentation | Roadmap ᕕ(ᐛ)ᕗ |


Discord Travis Issues Unlicensed

Features

  • C++. C.
  • Fast. Simple.
  • Modern. Readable.
  • Full featured. Extendable.
  • Object-oriented. Data-oriented.
  • Infinite documentation. Browsable sources.
  • Hundred of file formats supported. Unique binary format.
  • Royaltie fee. Free and unlicensed.
  • Other buzzwords. Small. Direct. Embeddable. Fun.

Rationale

  • Minimalistic coding style.
  • Less is more, DOD, ECS, KISS.
  • Heap allocations under control.
  • No installation, no makefiles, fast compilation times.
  • Generic 3D editor, that can be decoupled from the project.
  • Generic asset pipeline, that can be decoupled from the project.
  • JSON workflow: still human-readable, still mergeable.
  • Inspiration from: ands, bitsquid, ccxvii, jo, krig, ocornut, procedural, rjm, rlk, sgorsten, stb, vurtun.

Roadmap ᕕ(ᐛ)ᕗ

  • 00 Project structure, build system and makefiles.
  • 01 Window, rendering contexts and game loop.
  • 02 File formats, hashing, encryption and compression.
  • 03 Timers, easings and interpolation.
  • 04 Input bindings, digital+analog buttons, filters, gestures, chords and combos.
  • 05 Linear math, geometry, volumes and collisions.
  • 06 Cameras and frustum culling.
  • 07 Regions, triggers, trees and spatial partioning.
  • 08 Data pipeline and asset journaling.
  • 09 World streaming and level loading.
  • 10 2D/2.5D/3D/VR renderer and post-effects.
  • 11 Fonts, atlases and text rendering.
  • 12 Debug draw and debug UI.
  • 13 Procedural content, brushes, voxels, noise and CSG.
  • 14 Static meshes, decals, skyboxes and skydomes.
  • 15 Sprites, sheets and spines.
  • 16 Particles, billboards, emitters, trails and paths.
  • 17 Skeletal animation, blending, blendspaces, IKs.
  • 18 LODs, mesh instancing and scenegraphs.
  • 19 Server/client architecture.
  • 20 Message pipeline and serialization.
  • 21 Digital signals, message buffering and event polling.
  • 22 Entity/component/systems and world replication.
  • 23 Scripting, bindings and game modules.
  • 24 Navpoints, navmesh traversal and pathfinding.
  • 25 AI, H/FSM, behavior trees and flocking.
  • 26 Game flow and game UI.
  • 27 Localization, subtitles and unicode.
  • 28 2D/3D audio, HRTF, FFT, filtering and sound occlusion.
  • 29 Dialogue, quests and inventory.
  • 30 Full Motion Video and integrated cinematics.
  • 31 Editor, gizmos, properties, timeline and data tracks.
  • 32 Debugger, callstack, inspection, console, leaks, cvars and profiling.

Screenshots

Releases

2019.2 (Monkey3_Icarus), 2019.1 (YOB_Marrow)

Getting started

Execute the make.sh.bat script file to build & run the editor.

Additionally:

  • make (launch editor)
  • make game [platform] (launch game)
  • make make [game] [platform] (make game.exe executable)
  • make cook [game] [platform] (cook all raw game assets)
  • make pack [game] [platform] (pack all cooked game assets into game.pak file)
  • make fuse [game] [platform] (fuse game.pak and game.exe both together)

Disk structure

  • editor/, generic 3d editor and viewer.
  • engine/, portable engine runtime.
  • games/, games and demos.
  • tools/, build tools & generic asset pipeline.

Download

Build

AVA as engine:

  • Compile the amalgamated engine.c source file to get a functional game engine.
  • Compile your game as a dynamic library and place it near the AVA executable.
  • Tip: Rename both executable and dynamic library as desired. Ie, game.exe with game.dll will work.
  • Tip: Place an .ico icon close to the binary if you want to as well.
cl      engine.c                && echo AVA as engine (Windows)
g++     engine.c                && echo AVA as engine (Linux)
clang++ engine.c                && echo AVA as engine (OSX)

AVA as library:

  • Compile your game and link amalgamated engine.c source file with it.
cl      game.c engine.c         && echo AVA as library (Windows)
g++     game.c engine.c         && echo AVA as library (Linux)
clang++ game.c engine.c         && echo AVA as library (OSX)

Redistribution

- game.exe + .ico        (engine player)
- game.dll/.lua/.socket     (game logic) \
- game.rom/.pak        (ro data storage) | game :)
- game.ram/.sql        (rw data storage) /

License

The project is released into the public domain (as per this notice).
Any contribution to this repository is implicitly subjected to the same release conditions.

Alternatives

amulet, anvil, aroma, blendelf, chickpea, corange, ejoy2d, hate, island, juno, love, mini3d, mio, openframeworks, openkore, pez, moon, punity, roam, sushi, tigr,

About

A tiny unlicensed 3D game engine in C; with C++ and Lua interfaces. Written in 32 random ̷d̷a̷y̷s̷ m̷o̷n̷t̷h̷s̷ years.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published