/cx-games

Primary LanguageMakefile

CX Games

This repository consists of an archive for video games developed using the CX programming as well as libraries and other development resources.

What is CX?

CX is a general purpose, interpreted and compiled programming language, with a very strict type system and a syntax similar to Golang's. CX provides a new programming paradigm based on the concept of affordances, where the user can ask the programming language at runtime what can be done with a CX object (functions, expressions, packages, etc.), and interactively or automatically choose one of the affordances to be applied.

You can find more info on:

Games

The list of all games included in this repo as well as the respective stage of development can be found bellow:

Name Description Status Author
Pacman A clone in CX of the popular arcade game PacMan. Finished galah4d
CXtris A CX based remake of Tetris. Finished corpusc
Snake A remake of the classic game Snake, based on CX. Finished Lunier
Flappy Cat A CX clone of the viral game FlappyBird. Finished atang152
Pacman 3D An extension of the original PacMan with 3D capabilities. Finished galah4d
SkyBOOM A remake of Kaboom!, for the Atari 2600. Development corpusc
Contest Elim Somebody running a Skycoin contest requested this. Finished corpusc
Brick Breaker A Brick Breaker clone in CX. Development RedCurse
Aground A CX based remake of Aground. Development galah4d
Sky Taxi A remake of Space Taxi. Development corpusc

Instructions on how to run the games as well as documentation can be found in the respective folder, have fun!

Note: If you developed a game based on CX and want to have it added to this repo please open a PR.

Libraries

A list of all libraries useful for CX game development will be catalogued and added to this section in the future.

Name Description Status Author
Graphical3d A library to render 3D objects. Finished galah4d
UTest An unit testing framework for CX. Development galah4d

Collaborate

We are an open source project and everyone is welcome to contribute by creating games, documentation, testing, etc. If you are interested in doing so please read the following article) regarding collaboration via git, particularly the "Pull-Request Workflow for Code Contribution" section.

Video game submissions should be contained within a directory according the following structure:https://github.com/golang-standards/project-layout.

  • assets - We should store the resources that we're going to need for the video games in here, such as texture files.

  • cmd - Source code that will produce the executables or serve as the program's entry point (e.g., the main.cx file). Files in here should call libraries from the internal and pkg directories.

  • docs - If we ever need to document a library that we developed for a game, it'll go here.

  • examples - Sometimes we might need to test some features in isolation, and we should write some examples to provide better documentation.

  • internal - Any code that isn't general purpose should go here. For example, structures that represent Tetris pieces, and functions that rotate these pieces.

  • pkg - Any code that could be imported by other video games goes here. For example, a physics engine, an entity-component system, etc.

Detailed structural guidelines can be found here as well as in this article.