All Projects → elnormous → Ouzel

elnormous / Ouzel

Licence: unlicense
C++ game engine for Windows, macOS, Linux, iOS, tvOS, Android, and web browsers

Projects that are alternatives of or similar to Ouzel

Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (-21.25%)
Mutual labels:  game-engine, opengl, glsl, hlsl, metal
Daemon
The Dæmon game engine. With some bits of ioq3 and XreaL.
Stars: ✭ 136 (-77.59%)
Mutual labels:  game-development, game-engine, openal, opengl, glsl
Octopuskit
2D ECS game engine in 100% Swift + SwiftUI for iOS, macOS, tvOS
Stars: ✭ 246 (-59.47%)
Mutual labels:  game-development, game-engine, metal, tvos
Q3lite
Q3lite, an OpenGL ES port of Quake III Arena for embedded Linux systems.
Stars: ✭ 64 (-89.46%)
Mutual labels:  game, game-development, game-engine, raspbian
Fiber2d
Cross-platform 2D Game Engine in pure Swift
Stars: ✭ 415 (-31.63%)
Mutual labels:  game-engine, opengl, metal, tvos
Rizz
Small C game development framework
Stars: ✭ 428 (-29.49%)
Mutual labels:  game-development, game-engine, opengl, metal
Opentk
The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.
Stars: ✭ 2,284 (+276.28%)
Mutual labels:  game-development, game-engine, openal, opengl
Etlegacy
ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license.
Stars: ✭ 212 (-65.07%)
Mutual labels:  game, game-development, game-engine, opengl
Veldrid
A low-level, portable graphics library for .NET.
Stars: ✭ 1,784 (+193.9%)
Mutual labels:  game-development, opengl, metal, direct3d
Limonengine
3D FPS game engine with full dynamic lighting and shadows
Stars: ✭ 331 (-45.47%)
Mutual labels:  game-development, game-engine, openal, opengl
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+514.17%)
Mutual labels:  emscripten, game, game-engine, opengl
Mos
Lightweight game engine.
Stars: ✭ 153 (-74.79%)
Mutual labels:  game-development, game-engine, openal, opengl
Shadergen
Proof-of-concept library for generating HLSL, GLSL, and Metal shader code from C#,
Stars: ✭ 395 (-34.93%)
Mutual labels:  opengl, glsl, hlsl, direct3d
Shadered
Lightweight, cross-platform & full-featured shader IDE
Stars: ✭ 3,247 (+434.93%)
Mutual labels:  game-development, opengl, glsl, hlsl
Blue Flame Engine
A 3D/2D game engine that supports both DirectX11 and OpenGL 4.5
Stars: ✭ 129 (-78.75%)
Mutual labels:  game-development, game-engine, opengl, opengles
Openage
Free (as in freedom) open source clone of the Age of Empires II engine 🚀
Stars: ✭ 10,712 (+1664.74%)
Mutual labels:  game, game-development, game-engine, opengl
Klayge
KlayGE is a cross-platform open source game engine with plugin-based architecture.
Stars: ✭ 1,646 (+171.17%)
Mutual labels:  game-engine, openal, opengl, opengles
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+1827.18%)
Mutual labels:  game-development, opengl, glsl, hlsl
Engine
A basic cross-platform 3D game engine
Stars: ✭ 208 (-65.73%)
Mutual labels:  emscripten, game, game-engine, opengl
Ncine
A cross-platform 2D game engine
Stars: ✭ 372 (-38.71%)
Mutual labels:  emscripten, game-development, game-engine, opengl
ouzel

Ouzel v0.40

Build Status Build Status Quality Gate Join the chat at https://gitter.im/ouzelengine/Lobby

Ouzel is a C++ game engine mainly targeted for development of 2D games.

Supported platforms:

  • Windows 7, 8, 10
  • macOS 10.8+
  • Linux
  • iOS 8+
  • tvOS 9+
  • Android 3.0+
  • Emscripten (sample)

Supported rendering backends:

  • Direct3D 11
  • OpenGL 2, OpenGL 3 and OpenGL 4
  • OpenGL ES 2 and OpenGL ES 3
  • Metal

Supported audio backends:

  • XAudio 2
  • CoreAudio
  • OpenAL
  • OpenSL ES
  • ALSA

Features

  • Cross-platform (Windows, macOS, iOS, tvOS, Android, Linux, and Emscripten targets supported)
  • Multi-threaded (separate threads for rendering, sound, and game)
  • 2D and 3D scene management
  • GUI helper classes and management
  • Bitmap and true-type font support
  • Multiple side-by-side viewport support
  • XInput, DirectInput, IOKit, Apple GameController, and Linux evdev gamepad support
  • Actor animation (including tweening) system
  • Particle systems
  • Resource caching system
  • Localization support via loading string translations and UTF-8 string support
  • Software audio mixer for sound effect playback
  • High DPI support on Windows, macOS, and iOS
  • Easy to install (just pull the repository and build it)

Example app

The following code will open create a scene with a sprite in the center of it:

#include "assets/Bundle.hpp"
#include "core/Engine.hpp"
#include "scene/Camera.hpp"
#include "scene/Layer.hpp"
#include "scene/Scene.hpp"
#include "scene/SpriteRenderer.hpp"

class Example: public ouzel::Application
{
public:
    Example():
        assets(ouzel::engine->getCache(),
               ouzel::engine->getFileSystem())
    {
        assets.loadAsset(ouzel::assets::Loader::Image, "player", "player.png");
        ouzel::engine->getSceneManager().setScene(&scene);
        scene.addLayer(&layer);
        cameraActor.addComponent(&camera);
        layer.addChild(&cameraActor);
        playerSprite.init("player");
        player.addComponent(&playerSprite);
        layer.addChild(&player);
    }

private:
    ouzel::scene::Scene scene;
    ouzel::scene::Layer layer;
    ouzel::scene::Camera camera;
    ouzel::scene::Actor cameraActor;
    ouzel::scene::SpriteRenderer playerSprite;
    ouzel::scene::Actor player;
    ouzel::assets::Bundle assets;
};

std::unique_ptr<ouzel::Application> ouzel::main(const std::vector<std::string>& args)
{
    return std::make_unique<Example>();
}

Showcase

2D platformer Bearslayer is being developed using Ouzel engine.

Bearslayer

Compilation

GNU makefile, Xcode project, and Visual Studio project files are located in the "build" directory. Makefile and project files for sample project are located in the "samples" directory.

You will need to download OpenGL (e.g. Mesa), ALSA, and OpenAL drivers installed in order to build Ouzel on Linux. For x86 Linux also libx11, libxcursor, libxi, libxrandr, and libxss are required.

To build Ouzel with Emscripten, pass "PLATFORM=emscripten" to "make" command, but make sure that you have Emscripten SDK installed before doing so:

$ make PLATFORM=emscripten

You can build Android samples and run them on an Android device by executing the following commands in "samples/android" directory (Android SDK and NDK must be installed and added to PATH):

$ gradle assembleDebug
$ gradle installDebug
$ adb shell am start -n org.ouzel/org.ouzel.MainActivity

To build Ouzel on Raspberry Pi, you will have to install Raspberry Pi development library (libraspberrypi-dev) and kernel headers (raspberrypi-kernel-headers)

Because on Raspbian Stretch libEGL.so was renamed to libbrcmEGL.so and libGLESv2.so to libbrcmGLESv2.so you will have to run the following commands before building the samples on Raspbian 8 (Jessie) or older:

$ sudo ln -s /opt/vc/lib/libEGL.so /opt/vc/lib/libbrcmEGL.so 
$ sudo ln -s /opt/vc/lib/libGLESv2.so /opt/vc/lib/libbrcmGLESv2.so

System requirements

  • Windows 7+ with Visual Studio 2017 or newer
  • macOS 10.10+ with Xcode 9.3+
  • Any reasonable new Linux distro (x86 and ARM are supported) with gcc 7+ or clang 5+

Getting help

You can ask question in the following locations:

License

Ouzel codebase is released to the Public Domain

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].