Git Product home page Git Product logo

athenalegacy's Introduction

Athena Toolset

This first version of Athen was a small game toolkit I was working on to learn about game engines, I made asteroids in it, which quite frankly is overcomplicated now and some other small demos. I have since abandoned the project because I wanted to work on game projects that were more focused and less about just game engine technology. Some of the source code of the project has been brough forward into newer projects of mine such as the new Athena, but I no longer work on this. The new Athena, while being a custom made engine, is being made as part of a specific game, which it turns out is a far better way of doing things.

Athena was a small, personal game development toolset built as simply as possible to serve little game experiments I feel like making. The idea is that I make little games and experiments and this drives me to develop various different features that get added to the toolset. I'm making games here, not unecessary game engine features. The first game is an asteroids remake, which looks like this:

gameplay

3D editor

2D editor

A small sampling of the features it had

  • 2D vector graphics
  • Basic 3D graphics
  • A type reflection system
  • A simple editor with debug tools
  • Post processing with bloom, chromatic abberation, screen warping and a few other things
  • Font drawing
  • Simple audio
  • An Entity system
  • Input

Supported platforms

Currently only Windows 64 bit, as it uses DirectX11. It shouldn't be that hard to port to other platforms though, as the DX11 code all lives in a single file which can be replaced by a OpenGL or Vulkan version. One day I'll get around to this, promise.

Design principles

  • Simpler is generally better, simpler code is easier to change
  • Never add complexity to solve a problem you aren't sure exists
  • Do not attempt to solve all problems
  • Be willing to rewrite systems that aren't solving the problem well enough (this is easier if things are kept simple)
  • Accept that you do not know what the end result will be like
  • When designing systems, it must be considered how they're used before writing them
  • Be explicit. Hiding things is asking for unseen complexity.
  • Design with performance in mind (DOD etc), but allow for fast iterations

We essentially use the same practices and design principles as Godot. It has an excellent document on how to program using these ideas which you can read here

Compiling

Before you get to compiling, know that the only external dependency is SDL2. Before you try compiling, make sure SDL development libraries are installed somewhere on your PC.

Once that's dealt with, it's the usual cmake affair. I like using the cmake gui, but you can use the command line too. Run cmake on the base directory, specifying the "Build" folder as the place to build binaries. It'll ask you for some directories of SDL, and after that generate and build. Currently only tested with VS 2017 Win64. But it should work fine with other generators, so long as it's 64 bit.

athenalegacy's People

Contributors

davidcolson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

liuzhao104

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.