Giter VIP home page Giter VIP logo

fonline's Introduction

FOnline Engine

GitHub Codecov Codacy

Goal

Friendly engine for fallout-like isometric games for develop/play alone or with friends.

Features

  • Open Source under MIT license
  • OpenGL/ES/WebGL and DirectX (wip) rendering
  • C++17, AngelScript, C#/Mono and Fallout Star-Trek as scripting languages (wip)
  • Editor and Server target platforms
    • Windows
    • Linux
    • macOS (wip)
  • Client target platforms
    • Windows
    • Linux
    • macOS
    • iOS
    • Android
    • Web
    • PS4 (wip)
  • Online and singleplayer (wip) modes
  • Supporting of Fallout 1/2/Tactics, Arcanum and other isometric games asset formats
  • Supporting of 3d characters in modern graphic formats
  • Hexagonal/square map tiling

Media

Simplest way is:

And two videos to who don't like to google:
FOnline History Last Frontier

Work in progress

Bugs, performance cases and feature requests see at Issues page.

Some major issues (that I work currently)

  • Code refactoring (see separate section below)
  • C++ as native scripting language with additional optional submodules for AngelScript, C# and Fallout Star-Trek SL
  • Multifunctional editor
  • YAML imprving as main formal for all text assets
  • Singleplayer mode
  • Documentation

Some minor issues

Code refactoring plans

  • Move errors handling model from error code based to exception based
  • Eliminate singletons, statics, global functions
  • Preprocessor defines to constants and enums
  • Eliminate raw pointers, use only smart
  • Hide implementation details from headers using abstraction
  • Fix all warnings from PVS Studio and other static analyzer tools
  • Improve more unit tests and gain code coverage to at least 80%
  • Improve more new C++ features like std::array, std::filesystem, std::string_view and etc
  • Eliminate all preprocessor defines related to FONLINE_* (CLIENT, SERVER, EDITOR)
  • In general decrease platform specific code to minimum (we can leave this work to portable C++ or SDL)
  • Use more 'auto' keyword and replace 'simple for' on 'new foreach' (where it's possible)

Repository structure

  • BuildScripts - scripts for automatical build in command line or any ci/cd system
  • Resources - resources for build applications but not related to code
  • SdkPlaceholder - all this stuff merged with build output in resulted sdk zip
  • Source - fonline engine specific code
  • SourceTools - some tools for formatting code or count it
  • ThirdParty - external dependencies of engine, included to repository

Clone / Build / Setup

You can build project by sh/bat script or directly use CMake generator.
In any way first you must install CMake version equal or higher then 3.6.3.
Unformation about build scripts you can find at BuildScripts/README.md.
All output binaries you can find in Build/Binaries directory.

Third-party packages

  • ACM by Abel - sound file format reader
  • AngelScript - scripting language
  • Asio - networking library
  • Assimp - 3d models/animations loading library
  • backward-cpp - stacktrace obtaining
  • Catch2 - test framework
  • GLEW - library for binding opengl stuff
  • glslang - glsl shaders front-end
  • Json - json parser
  • diStorm3 - library for low level function call hooks
  • PNG - png image loader
  • rapidyaml - YAML parser
  • SDL2 - low level access to audio, input and graphics
  • SHA1 by Steve Reid - hash generator
  • SHA2 by Olivier Gay - hash generator
  • SPIRV-Cross - spir-v shaders to other shader languages converter
  • Theora - video library
  • Vorbis - audio library
  • cURL - transferring data via different network protocols
  • FBX SDK - fbx file format loader
  • {fmt} - strings formatting library
  • Dear ImGui - gui library
  • libbson - bson stuff
  • mbedTLS - library for network transport security
  • MongoC Driver - mongo db driver
  • Mono - c# scripting library
  • libogg - audio library
  • openssl - library for network transport security
  • unqlite - nosql database engine
  • variant - c++17 std::variant implementation in c++11/14
  • websocketpp - websocket asio extension
  • zlib - compression library

Help and support

fonline's People

Contributors

brightside56 avatar cvet avatar rifleman17 avatar skycast avatar wipe2238 avatar

Watchers

 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.