Skip to content

A small ASCII graphical game engine for the windows console (and Linux since v2.0.2.) done in C++

Notifications You must be signed in to change notification settings

mmmuscus/Shadow-Functions-Engine

Repository files navigation

1. Introduction

This section was last checked in the 2.0.3. version of the engine

Note: The 2.0.2. version of the engine now runs on Linux too! This port is thanks to the work of SuperFola who also did a few quality of life changes as well, go and check him out!

1.1. The structure of this documentation

This section was last checked in the 2.0.3. version of the engine

This documentation will have three main parts and a table of contents:

In the introduction I will cover my motivation for this engine, the idea, the end product and plans about the future of the project.

The second part will have two segments. The first detailing the architecture of the system, what it does. The second will be the guide to operate it. Hopefully these two segments will provide you with sufficient information to make a game with this engine.

The last part will (as mentioned above) go over the hows of the systems in place. It will be broken down into different subsections, each dealing with a header or cpp file and it's defines, structures, variables, or functions. This part will act more like a cheat sheet than anything, if you wish to conserve your sanity do not read it from start to finish in one sitting.

1.2. Who the hell am I and what the hecky heck is this?

This section was last checked in the 2.0.3. version of the engine

I originally started this project in high school. The initial goals of the project was to find out what I can do with my basic understanding of programming, whilst not looking up the answers to my problems. The last update I did while (on paper) I still was in high school was version 2.0.2.

Now I am enrolled in a computer science degree. With this the project's goals have changed a bit. In the classes that I am taking and will be taking I will learn a lot of new things about programming. I plan to incorporate all this knowledge into my project. Another thing that has changed is the fact that after the 2.0.2. update I plan to look up different parts and functionalities of (for example) the windows.h header file, like how to set the dimensions or the font of the console window. The one goal that still remains the same is that if I have a problem I want to figure out the solution to it by myself.

1.3. So what is the project?

This section was last checked in the 2.0.3. version of the engine

The bare minimum I wanted to accomplish was a real time 2D top down game, with a "realistic" binary shading system (this was all planned to be running in the windows console). The concept of the shading system is the following: There is a player (represented by the '@' character); who has a field of view in which he can see things; anything that would block his view (e.g.: an 'x' character) casts a shadow, meaning that he can't see the things behind the "wall", even if those things would be in his field of view.

Here is an example for the shading system in action:

example

Besides the minimum goal I created basic text file based level and field of view editors. I also created the option to make new characters that could block light, or player movement. In the latest version (2.0.0.) I added an animation pipeline, with this you can create .txt files that will be parsed into animation arrays and can be played in the console window.

Features as of now:

  • Real time 8 directional player movement
  • Binary shading
  • Map and field of view editors
  • Character attribute editors (can this character block light? can it block player movement?)
  • Animation pipeline

The next big update of the project (3.0.0.) will be the entity update. In this version I plan to add different entities with different attributes, for example: torches that emit light, NPCs that can be interacted with, posts that have text on them etc.

About

A small ASCII graphical game engine for the windows console (and Linux since v2.0.2.) done in C++

Resources

Stars

Watchers

Forks

Packages

No packages published