Git Product home page Git Product logo

adk's Introduction

ADK (Ayax Development Kit)

level creation gif

"Hey, good luck on your engine." - Noel Berry Aug 14, 2020 at a bouldering gym

Features Overview Trailer

Watch on YouTube

IMAGE ALT TEXT HERE

How to Build and Run

Everything that ADK needs is included in this repository.

Windows

  • Run build-win32-cmake.bat (requires CMake)
  • Run run.bat (with argument "vs" if you want to launch Visual Studio to debug)
  • That's it

If you want to use an IDE like CLion or Visual Studio, make sure to set the "Working Directory" to the /data directory at the root of this repo.

How to Get Started

https://github.com/kevinmkchin/ADK/wiki

Purpose

Ayax Development Kit is a collection of tools and resources that one would want in order to create a 2D video game. In essence, ADK is an easy-to-use C++ game engine for building modern 2D games, but it includes several useful game systems such as character controllers, cameras, and common game objects such as trigger boxes. ADK also includes a demo platformer game to study. Whether you take one of the example/demo games and expand upon it or decide to create a new game using the integrated editor, ADK provides the features you need.

ayax screenshot 1

I started this little project because I wanted two things: I wanted my own custom C++ game engine to make games with and I wanted a monolithic repository where I can collect all of my little games and game-related programming projects. Instead of having a ton of small projects and repositories, I wanted to compile them all into a single project. Not only do these projects offer references to learn from when creating my next game, having them included with ADK allows me to share code between the projects. The idea is to create systems and game features that are reusable across projects, so that, for example, if I program an A* pathfinding system in one game I will have it available to use in another game.

ayax gif

If I was going to create my own custom C++ game engine, I needed it to be better than the other engines available. The goal was to make an engine that was more flexible than Unreal engine and better than Game Maker.

Features

  • Prefabs
    • Prefab system allows you to create, configure, and store an object complete with all its property values, animations, and collisions as a reusable Asset. The Prefab Asset acts as a template from which you can create new Prefab instances in the Scene.
  • Sophisticated Integrated Editor
    • Save and Load Levels
    • Integrated editor allows for working very close to the final product compared to using an external editor
    • Directly placing entities (which is possible because the editor is integrated) means levels aren't confined to a grid
    • Configure sprites, collisions, and animations all within the editor
  • Code Reflection / Metaprogramming
    • Expose class fields to the editor. This is very useful in level creation; for example you can change the speed of certain enemies from within the editor. This means different instances of the same enemy class can have varying speeds. Reflection is very powerful.
  • Animation System
    • Easy to configure multiple animations from a single spritesheet
  • Collisions
    • Included code examples demonstrate how to easily implement pixel-perfect collision using the provided collision system
  • Timers
    • Timers allow you to set a timer for a callback function/delegate. For example, when the player dies, you could set a 2 second timer for a function that restarts the level. Very useful.
  • Entity and Scene System
    • What do you expect? It's a game engine
  • Entity Layers
    • Entities can have variable depth, allowing for parallax effects and other cool tricks
  • Reference Counted Resource Management
    • Automatic reference counting ensures resources are acquired when needed and freed when they are not
  • Tags
    • Tags help you identify game objects during runtime. Without knowing the type of the object, we can simply check the object's tags and know whether or not that object can or cannot do certain things or has or doesn't have certain properties. A Tag is a reference word which you can assign to one or more game objects.

ayax screenshot 3

ayax logo

Greek mythological hero, Ajax the Great

Planned Features

Progress

Dev Logs

dev log 1

dev log 2

dev log 3 - collisions, save/load levels, editor QoL

dev log 4 - platformer showcase

dev log 5 - Improved Engine Workflow, Platformer Game Progress, Camera Class

adk's People

Contributors

kevinmkchin avatar

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.