All Projects → Madour → Nasnas

Madour / Nasnas

Licence: other
An intuitive and user friendly 2D game framework for C++

Programming Languages

cpp17
186 projects

Projects that are alternatives of or similar to Nasnas

Hitagi.js
JavaScript HTML5 game development framework
Stars: ✭ 184 (+40.46%)
Mutual labels:  game-development, game-framework
Crsfml
Crystal bindings to SFML multimedia/game library
Stars: ✭ 274 (+109.16%)
Mutual labels:  game-framework, sfml
Html5 Canvas Game Boilerplate
Provides a set of default code that makes getting up and running with an HTML5 canvas game very easy.
Stars: ✭ 182 (+38.93%)
Mutual labels:  game-development, game-framework
Goluwa
a game framework written in luajit
Stars: ✭ 173 (+32.06%)
Mutual labels:  game-development, game-framework
Excalibur
🎮 An easy to use 2D HTML5 game engine written in TypeScript
Stars: ✭ 892 (+580.92%)
Mutual labels:  game-development, game-framework
Obengine
2D Game Engine with Lua Scripting made on top of SFML !
Stars: ✭ 335 (+155.73%)
Mutual labels:  game-development, sfml
Nico
Nim Game Framework based on Pico-8
Stars: ✭ 254 (+93.89%)
Mutual labels:  game-development, game-framework
Unrealclr
Unreal Engine 4 .NET 5 integration
Stars: ✭ 1,275 (+873.28%)
Mutual labels:  game-development, game-framework
Gameproject3
游戏服务器框架,网络层分别用SocketAPI、Boost Asio、Libuv三种方式实现, 框架内使用共享内存,无锁队列,对象池,内存池来提高服务器性能。还包含一个不断完善的Unity 3D客户端,客户端含大量完整资源,坐骑,宠物,伙伴,装备, 这些均己实现上阵和穿戴, 并可进入副本战斗,多人玩法也己实现, 持续开发中。
Stars: ✭ 655 (+400%)
Mutual labels:  game-development, game-framework
Rizz
Small C game development framework
Stars: ✭ 428 (+226.72%)
Mutual labels:  game-development, game-framework
Factory Rise
Factory Rise is a 2D sandbox game, focused on building, developing industries and handling resources. The game is based on Oxygen Not Included, Terraria, Factorio and some Minecraft mods (EnderIO, Industrial Craft, BuildCraft, GregTech and Thermal Expansion), it also have a game progress similar to StarBound.
Stars: ✭ 21 (-83.97%)
Mutual labels:  game-development, sfml
Is Engine
SFML C++ game engine that allows to create games on Web (HTML 5 - CSS 3), Android and PC
Stars: ✭ 94 (-28.24%)
Mutual labels:  game-development, sfml
Lambda Lantern
🧙 ‎‎ A 3D game about functional programming patterns. Uses PureScript Native, C++, and Panda3D.
Stars: ✭ 122 (-6.87%)
Mutual labels:  game-development
Xenko
Old repo for Xenko Game Engine. Please use https://github.com/xenko3d/xenko instead.
Stars: ✭ 1,565 (+1094.66%)
Mutual labels:  game-development
Gamedev4noobs
Olá, sejam bem-vindos ao repositório _gamedev4noobs_ do Estúdio Vaca Roxa. O propósito desse repositório, além de contribuir para o projeto 4noobs, é ensinar o básico do desenvolvimento de jogos para iniciantes. Apresentando boas práticas e insumos para criar games incríveis.
Stars: ✭ 122 (-6.87%)
Mutual labels:  game-development
Defold
Defold is a completely free to use game engine for development of desktop, mobile and web games.
Stars: ✭ 1,938 (+1379.39%)
Mutual labels:  game-development
Flecs
A fast entity component system (ECS) for C & C++
Stars: ✭ 2,201 (+1580.15%)
Mutual labels:  game-development
Unflattener
Make normal maps for 2D art
Stars: ✭ 125 (-4.58%)
Mutual labels:  game-development
O2
2D Game Engine with visual WYSIWYG editor
Stars: ✭ 121 (-7.63%)
Mutual labels:  game-development
Cx
Stars: ✭ 121 (-7.63%)
Mutual labels:  game-development

NasNas

An intuitive and user friendly 2D game framework for C++.

Language grade: C/C++ Total alerts

FeaturesHow to buildGet StartedShowcaseSupport

NasNas is a lightweight cross platform modular 2D game framework.

It is entirely written in modern C++17, and doesn't have any dependency other than SFML2.

It provides a clean and easy to use API.

The framework is separated in multiple independent modules :

  • Core is the only non optional modules. They are needed to create a NasNas application. They contain core classes and data needed by the framework.
  • Reslib contains the resource manager and resource loader. It handles resource loading and accessing in a very elegant way.
  • ECS contains the BaseEntity and Components classes. Add Components to BaseEntity derived classes to add more functionalities to them, like graphics, physics, collider, inputs... Or create and add your own customized components.
  • Tilemapping is a Tiled Map loader (.tmx). It seamlessly integrates with NasNas and speeds up development for tile based games.
  • UI contains the User Interface utilities. (WIP)
  • More modules will be developed in the future !

Features

Implemented :
  • [x] Scene and Layers system
  • [x] Cameras and Shaders
  • [x] Automatic resource loader and manager system
  • [x] Entities and components (animated sprites, shapes, physics, inputs, collider, customized components ...)
  • [x] Tiled map loader (.tmx)
  • [x] Text and bitmap fonts
  • [x] Transitions
  • [x] Multi texture SpriteBatching
  • [x] Global app configuration settings
  • [x] Debug text display in-game
  • [x] Convenient console Logger
In Progress:
  • [ ] Menus and UI
To do :
  • [ ] Particles system
Future :
  • [ ] Splash screens
  • [ ] Levels and game events management
  • [ ] In-game command line for debugging

Build

Clone the repository (with --recurse if you don't have SFML already installed on your computer). Then, you can build :

mkdir build && cd build
cmake ..
cmake --build . -j4

This will build the static library libNasNas.a (NasNas.lib on windows).

Additional CMake options you can pass :

  • -DNASNAS_FIND_SFML=OFF to build SFML as a submodule inside the project (this will be OFF automatically if SFML is not found)
  • -DNASNAS_EXAMPLES=ON to create the example applications targets
  • -DNASNAS_BUILD_RESLIB=OFF to disable the Reslib module
  • -DNASNAS_BUILD_ECS=OFF to disable the ECS module
  • -DNASNAS_BUILD_TILEMAPPING=OFF to disable the Tilemapping module
  • -DNASNAS_BUILD_UI=OFF to disable the UI module

Get Started

Here is a sample code using NasNas framework, this will create a 720x480 window and log a string to the console :

#include <NasNas.h>

class Game : public ns::App {
public:
    Game() : ns::App("My game", 720, 480) {
        ns_LOG("Created a NasNas app !");
    }
    void onEvent(const sf::Event& event) override {
        if (event.type == sf::Event::Closed)
            getWindow().close();
    }
    void update() override {}
};

int main() {
    Game g;
    g.run();
    return 0;
}

A complete tutorial to learn how to use the framework can be found on the wiki.

Documentation can be found here.

You can also check examples source code for an overview of what you can do with the framework.

Showcase

The following games were made with NasNas during game jams :

  • Warp Runner on itch - source code not available (yet)
  • History Leaks on itch and github

Support

If you like the project, please consider starring this repository.

Author

  • Modar Nasser
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].