A descriptive language for making video games

Tom Tsagk fe8fbd20d0 start implementation of characteristics, currently supports only transform 2 years ago
documentation c229e0e0f4 add example of game_structure and documentation 2 years ago
examples 62ef199b66 now accepts multiple objects 2 years ago
src fe8fbd20d0 start implementation of characteristics, currently supports only transform 2 years ago
target fe8fbd20d0 start implementation of characteristics, currently supports only transform 2 years ago
README.md dbf01d4e79 update README 2 years ago
UNLICENSE 6df1ccc7c1 update license file 2 years ago
game_structure 62ef199b66 now accepts multiple objects 2 years ago

README.md

(under development)

avgdl - abstract video game development language

a language to describe video games in an abstract way, in order to allow compilation to different languages and platforms. this language is not meant to be user friendly. its purpose is for other languages to compile to this one which in turn can compile to any given platform.

status

currently this project supports very few features inside a game, and can compile to a python game

how does it work

the concept is that, a user-friendly language can be created, which describes a video game. that language can then compile to this language, which in turn is responsible to support as many platforms as possible. so once this language supports a new platform, all the existing languages can automatically compile directly to that platform without spending extra time

compile targets

supported compilation targets:

  • python: a game can be compiled to python code using opengl and pygame

project structure

  • documentation/: folder containing everything you need to understand this project better
  • target/: contains all the supported target languages
  • examples/: contains example game data that are ready to be compiled
  • src/: contains all source code
  • game_structure: a file describing the abstract data structure of a video game. for more information on its syntax and what its for, see documentation/game_structure
  • more coming soon

what it supports so far

in its current state, a game can have only one object with 3 vertices, 1 color and 1 matrix.

the plan is to support an infinite number of worlds, each one having infinite number of objects with custom data

how to compile

to compile the hello triangle file from the examples, move to the projects directory from the terminal and run

perl -Isrc src/main.pl -t python examples/hello_triangle

this will create a folder in the current directory called "python_engine", which has everything inside to run a game (standalone). to run the game type:

python python_engine/engine.py

in my case I used python2 since I have pygame libraries for python2 only, adjust to your own system