All Projects → etorth → Mir2x

etorth / Mir2x

open source MMORPG game

Projects that are alternatives of or similar to Mir2x

Cdogs Sdl
Classic overhead run-and-gun game
Stars: ✭ 422 (+257.63%)
Mutual labels:  game, 2d, sdl2
Knightonline
OpenKO is an open source version of the old school Knight Online MMORPG
Stars: ✭ 146 (+23.73%)
Mutual labels:  game, mmorpg, sdl2
Sycophant
Numerous Ninjas: Beta stage mobile game written in Unity
Stars: ✭ 64 (-45.76%)
Mutual labels:  game, 2d
Westward
A collaborative MMORPG made in Javascript
Stars: ✭ 66 (-44.07%)
Mutual labels:  game, mmorpg
Dungeonrush
👾🐍 A opensource game inspired by Snake, written in pure C with SDL
Stars: ✭ 1,192 (+910.17%)
Mutual labels:  game, sdl2
Tetris Sdl C
🕹️ A toy project implementing a simple tetris clone in C for learning SDL 2.x.
Stars: ✭ 60 (-49.15%)
Mutual labels:  game, sdl2
Bytepath
A replayable arcade shooter with a focus on build theorycrafting made using Lua and LÖVE.
Stars: ✭ 1,119 (+848.31%)
Mutual labels:  game, 2d
Engine
C++11 and SDL2 lightweight 2d game framework
Stars: ✭ 71 (-39.83%)
Mutual labels:  game, sdl2
Chasingplanes unity3d
A "Missiles" game replica, 2D fun mobile game about avoiding missiles while flying a plane.
Stars: ✭ 42 (-64.41%)
Mutual labels:  game, 2d
Kys Pascal
《金庸群侠传》Pascal重制版
Stars: ✭ 86 (-27.12%)
Mutual labels:  game, sdl2
Novelrt
A cross-platform 2D game engine accompanied by a strong toolset for visual novels.
Stars: ✭ 81 (-31.36%)
Mutual labels:  game, 2d
Azerothcore Wotlk
Complete Open Source and Modular solution for MMO
Stars: ✭ 1,330 (+1027.12%)
Mutual labels:  game, mmorpg
Cataclysm Dda Android
An unofficial Android port of Cataclysm: Dark Days Ahead.
Stars: ✭ 58 (-50.85%)
Mutual labels:  game, sdl2
Forgottenserver
A free and open-source MMORPG server emulator written in C++
Stars: ✭ 1,024 (+767.8%)
Mutual labels:  game, mmorpg
Supertux
SuperTux source code
Stars: ✭ 1,120 (+849.15%)
Mutual labels:  game, sdl2
Sundog
A port of the Atari ST game SunDog: Frozen Legacy (1984) by FTL software
Stars: ✭ 42 (-64.41%)
Mutual labels:  game, sdl2
Cavestory Sdl2
Reconstructing Cave Story with SDL 2.0 and C++14
Stars: ✭ 69 (-41.53%)
Mutual labels:  game, sdl2
Opendiablo2
An open source re-implementation of Diablo 2
Stars: ✭ 10,057 (+8422.88%)
Mutual labels:  game, 2d
Yh
a tech demo for a bullet hell game. for the full game visit https://gilmi.me/nyx
Stars: ✭ 34 (-71.19%)
Mutual labels:  game, sdl2
Cosmo Engine
A new game engine to play the MS-DOS game "Cosmo's Cosmic Adventure" on modern systems
Stars: ✭ 38 (-67.8%)
Mutual labels:  game, sdl2

mir2x

Coverity Scan Build Status Appveyor Build Status Travis CI Build Status Gitter chat

With C++20 coroutine feature support, you need a compiler supports c++20 to compile.

mir2x is a c/s based mir2ei implementation with various platforms supported. It contains all need components for game players and developers:

  • client
  • monoserver
  • pkgviewer
  • animaker
  • mapeditor

Windows

For windows please download binaries from appveyor

https://ci.appveyor.com/project/etorth/mir2x/build/artifacts

If complains missing dll, you may need to copy .dll files from mir2x/bin to mir2x/client and mir2x/server.

Building from source

mir2x requires cmake v3.12 and gcc support c++20 to run. Mir2x needs some pre-installed packages before compile:

libsdl2-dev
libsdl2-image-dev
libsdl2-ttf-dev
libsdl2-mixer-dev
libpng-dev
liblua5.3-dev
libfltk1.3-dev

Cmake complains if libs are missing. After install all these dependencies, clone and compile the repo. By default cmake tries to install in /usr/local. use ``CMAKE_INSTALL_PREFIX" to customize.

$ git clone https://github.com/etorth/mir2x.git
$ cd mir2x
$ mkdir b
$ cd b
$ cmake .. -DCMAKE_INSTALL_PREFIX=install
$ make
$ make install

First time run

The above steps install binaries in mir2x/b/install, to start the monoserver, click menu server/launch to start the service before start client:

$ cd mir2x/b/install/server
$ ./monoserver

Start client, currently you can use default account (id = test, pwd = 123456) to try it:

$ cd mir2x/b/install/client
$ ./client

Currently the magic spell part is not fully done yet, you can press key to trigger:

t: Thunder
s: Summon Taoist Dog
u: Summon Taoist Skeleton
f: Taoist Fire
y: Shield

Code style

Global variables:

  1. no globals of builtin types, they are lacking of multithread access control.
  2. no globals of class instances, use pointer instead, for better construction/destruction control.
  3. all member functions of globals should be:
    • simple
    • thread-safe
    • atomic operations
  4. name all global pointers as g_XXXX and use them by extern, and
    • allocate them at beginning of main()
    • remain valid during the whole run, and ONLY free them at process exit.

Error handling:

  1. use exception for good/bad path control, force catch at exit of main() or clone().
  2. do strict parameters checking before doing actual logic, no assumptions.
  3. let the crash happen ASAP if any fatal error detected

General rules:

  1. make all member functions self-contained, avoid first/second half logic.
  2. don't do optimization too early, perfer simple/clear logic.

Packages

mir2x uses a number of open source projects to work properly, and of course itself is open source with a public repository on github, please remind me if I missed anything.

  • SDL2 - A cross-platform development library designed to provide a hardware abstraction layer.
  • FLTK - A cross-platform C++ GUI toolkit for UNIX®/Linux® (X11), Microsoft® Windows®, and MacOS® X.
  • asio - A cross-platform C++ library for network and low-level I/O programming.
  • g3log - An asynchronous, "crash safe", logger that is easy to use.
  • lua - A powerful, efficient, lightweight, embeddable scripting language.
  • sol2 - A fast, simple C++ and Lua binding.
  • tinyxml2 - A simple, small, efficient, C++ XML parser.
  • utf8-cpp - A simple, portable and lightweigt C++ library for UTF-8 string handling.
  • libpng - The official PNG reference library.
  • ThreadPool - A simple C++11 Thread Pool implementation.
  • astar-algorithm - Implementation of the A* algorithm in C++ and C#.
  • SQLiteCpp - SQLiteC++ (SQLiteCpp) is a smart and easy to use C++ SQLite3 wrapper.
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].