Skip to content

Aether Engine is a Friday Night Funkin' engine written in C++ and implemented with the Raylib library.

License

Notifications You must be signed in to change notification settings

silver984/AetherEngine

Repository files navigation

AETHER ENGINE

Stars Forks Build status Issues License Repo size Supported platforms


Friday Night Funkin'

Friday Night Funkin' is a rhythm game. Built using HaxeFlixel for Ludum Dare 47.

Links:

This project includes assets from the original Friday Night Funkin' game, which are owned by their respective creators and used here for educational and non-commercial purposes. All original assets created by me are released under the project's license.

What is Aether Engine?

Aether Engine is a Friday Night Funkin' engine written in C++ and implemented with the Raylib library. This engine aims to introduce a more flexible way of modding Friday Night Funkin'.

Why choose Aether?

Bullets here are still in work in progress! These can be treated as goals for this engine.
  • Aether gets rid of callbacks like getProperty() and setProperty() by implementing a way for users to directly manipulate objects and behavior.

    Example:
    Syntax is subject to change
     ---@param self PlayState
     function init(self)
     	aether.console_print("entered PlayState!")
     end
    
     local new_pos = raylib.vec2.new(0, 0)
    
     ---@param self PlayState
     ---@param delta number
     function update(self, delta)
     	new_pos.x = self.player.pos.x + (20 * delta)
     	new_pos.y = 400
     	self.player.pos = new_pos -- change the player's position
     end
    
     ---@param self PlayState
     function on_beat(self)
     	if self.music.get_conductor().beat == 40 then
     		-- switch to a different game state using the gradient transition
     		ui.gradient_transition.switch_state(TITLE_STATE)
     	end
     end

  • Aether aims to be much more optimized than other engines

    Example:
    to-do benchmark comparison

  • Aether supports fully scriptable gameplay

    Example:
    to-do showcase

  • Scripts aren't bound to one game state

  • Scripts are able to declare global variables that are accessible across all other scripts

  • Aether allows you to render completely 3D objects with just lua scripts

    Example:
    to-do showcase

  • Easy modding workflow, and more!


Building

Prerequisites

To be able to build Aether Engine, you will need at least the following:

  • A C++ compiler (depending on your platform)

    Visual Studio on Windows

    After launching the installer, select Desktop development with C++. You may choose other features, but you NEED at least MSVC and Windows SDK installed.

    macOS

    Use Xcode’s command line tools, which gives you Clang
     xcode-select --install
    

    Linux

    Ubuntu
     sudo apt install build-essential
    
    Fedora
     sudo dnf install gcc gcc-c++
    
    Arch
     sudo pacman -S base-devel
    
    Clang is also usually optional everywhere
     sudo apt install clang
    

  • CMake : 3.1 to 4.1.1

Compiling

# setup cmake
# only needed once unless CMakeLists.txt is modified
cmake -S . -B build

# build release
cmake --build build --config Release 

# build debug
cmake --build build --config Debug 

Credit/s

  • silver984 : Lead developer

  • CallMeBryze : Playtester


License

Aether Engine is released under the MIT License. Look here for more information.

About

Aether Engine is a Friday Night Funkin' engine written in C++ and implemented with the Raylib library.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages