Repository for the ArcadeFighter Engine.
TooOld2Rock'nRoll 2d8a510baf Merge branch 'frazatto/todos_and_minor_fixes_shader' | 1 week ago | |
---|---|---|
inc | 1 month ago | |
lib | 1 week ago | |
res | 1 month ago | |
src | 1 week ago | |
.gitignore | 1 month ago | |
COPYING | 1 year ago | |
Makefile | 1 month ago | |
README.md | 1 week ago | |
todo | 1 week ago |
The game engine that teaches!
The Arcade Fighter Demo is a tutorial/exemple on how to use the Arcade Fighter Engine.
For brevity, every time we reference to the Demo, we are talking about this exemple tutorial; And when we say Library or Engine, we are talking about the lower level code necessary to make the Demo work.
You can find specific information on the engine here.
It is NOT in any way or form a stable and robust game, it is offered as is with no guaranties with the intent to demonstrate our engine and to offer a sandbox where beginners may play around, maybe build their own games upon.
For now, this is a "programmers oriented" project, since there is A LOT to be done just in that sense, but we will eventually implement some features and tools to make life more enjoyable for game designers and graphical artist.
The true power of this project though is way way other than building good games! No, to at all!
We intend on tricking you into learning and even to study of your own volition (gasp).
The following list of dependencies are for a clean Debian 12 installation, it should be very similar to any other distro.
Be sure the drivers for your graphics card are updated, check the OpenGl with glxinfo | grep "OpenGL version"
. The
minimal version is 4.3 if you need asynchronous error logging for OpenGl, but it can be downgraded to a lesser version
otherwise (you will need to generate a different glad version though).
Accept any extra dependencies the package manager asks to download.
sudo apt-get install build-essential libsdl2-dev libglm-dev libfmt-dev
Optional packages:
sudo apt-get install git doxygen
Since this is a project under heavy development with no intent to be a professional solution, we don't recommend that you clone the master branch (which would be vary bad for your sanity and faith in humankind), instead, download the source files directly or checkout a specific stable tag, since methods may change signatures without warning or even entire classes be refactored between updates.
We do hope to one day get to a state of completion, in which we can be satisfied by our initial assumptions and ongoing design choices, but this is not that day...
Anyway, the following command will clone the repository. Change to the directory you want it to be download to (the actual repository directory will be created by git) and be sure git is installed.
git clone https://notabug.org/TooOld2Rock-nRoll/ArcadeFighterDemo.git
The project file structure should be simple to follow for anyone with a little of C/C++ programming experience. Our Demo
is implemented at the root of the project, the ArcadeFighter Library itself is inside the /lib
directory and can be
compiled as a standalone static library to be linked in your own projects.
We are assuming most people will try to build a fighting game in the stile of arcade games like Street Fighter, King of Fighters or Samurai Showdown. If you are starting with game development, take some time to follow the examples already provided and pay attention specially to the sub classes and base classes comment sections, there are many external resources that can help you in your present and future endeavors. Just play around until something breaks, try to modify the characters behavior, the sprite sheets, experiment with different game loop regimes and, eventually, build something yours just by substituting our content with your own.
More advanced users will probably just take a overlook at the ins and outs and discard the example altogether. The important bits are the startup sequence, the loading procedures and abstract methods in most base classes. All the code is well documented and have more specif examples of how to deal with each class isolated. In all honest, even classes like ArcadeFighter (the highest level class, abstracting all the other engine's functionalities) are just suggestions of how it could be done in your own game.
But! Those are just means to an end, we really want to trick you into being a better [programmer | architect | designer
| artist | musician?] and this project offers lots and lots of opportunities for you to dive into any of those subjects
at any time.
This library was designed and developed using GNU/Linux and FOSS in mind, you can manage to compile and run under Windows within WSL in fairly the same manner and it is untested under macOS.
The following instructions are for building the ArcadeFighter Demo, which is a brief tutorial/suggestion on how to start developing your game using our engine. If you just wish to build the ArcadeFighter Library for your own game, you can find more info here. And if you intend on actively repurpose/tweaking the engine, just mimic our Makefiles for easy merging with your own project.
The command make [-h | --help]
should output a complete list of accepted options to use.
Calling make [name=exe_name] -j all
will compile the Demo and its dependencies, generating a executable (with optional
given name) at the root of the project. We recommend the use of the -j parameter to the make command as to speed up
the build using all the available CPU cores/threads.
If you did not alter the code in any form and encountered errors during compilation, take a look at the previous list
of dependencies and check they are all correctly installed in your system. If the error persists, check the
troubleshooting list at the end.
Most of ArcadeFighter was created by André Frazatto (AKA TooOld2Rock'nRoll)
This project would not be possible without people like Joey de Vries from LearnOpenGL and Bob Nystrom from Game Programming Patterns that generously donated their experience and time to build those resources and offer it online for free, helping to inspire countless others like myself.
The ArcadeFighter Demo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
The ArcadeFighter Demo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
The ArcadeFighter Demo depends on the ArcadeFighter Library, which is also distributed under the GLP3, you can find more info here
Licence information for images and asset packs can be found at the same directory the image files are.
(If you don't understand the point of these licenses and don't understand the difference between Open Source and Free Open Source Software (or FOSS for short), this may be a good reading The GNU Project)
Having a hard time going around or just really like ArcadeFighter? Let us know, say hi on our
Subreddit, your experience may help us make this project more friendly.
Found a bug? Don't be shy, open a ticket here, we may even be able to do something about it, eventually....
If you know your way around Git,there is even more you can do:
+ Our documentation is lacking? Think you can do better? Go for it.
+ All the Todos are listed at the class's header files and vary from simple patches to complete new feature, just find
one to call your own.
Fork the dev branch and send that pull request our way, just remember we may not agree on the solution, be open to
suggestions and ALWAYS follow the coding style guide here.
If your problem or subject can't be solved through one of our other social links, you can get in contact true , we just can't promise to return your e-mail in timely fashion.
This is README.md
for the ArcadeFighter Demo.