Coder Social home page Coder Social logo

shidacea / shipectral Goto Github PK

View Code? Open in Web Editor NEW
7.0 3.0 0.0 4.31 MB

Core of the Shidacea game engine, written in Crystal

License: MIT License

Crystal 76.63% Batchfile 0.62% Ruby 22.66% Shell 0.10%
shidacea 2d-game-engine 2d-game-framework game-development crystal mruby

shipectral's Introduction

Shipectral

Shipectral (accompanied by Shidacea) is a 2D game engine with different cooperating segments.

Its goal is to provide a simple entry into game development, which works out of the box, but can also be used for more complicated ideas.

Features

  • Powerful scripting using mruby and Anyolite
  • Fast Crystal core using SDL (other libraries are also technically possible)
  • Support for Dear ImGUI
  • ERB methods for text substitution
  • Support for project structures
  • Game development library for easier development
  • Modular design

Structure

The very core of Shipectral is a compound of SDL, Dear ImGUI and Anyolite, allowing for the direct usage of SDL and ImGUI functions in Ruby scripts.

On top of this, the Shidacea library is available, which provides more advanced game functions and support for more readable scripts, while still preserving the fast speed of the core functions.

Another module on top is Launshi, a simple launcher application written in Shidacea, able to launch other Shidacea-based games without recompiling the core.

Overall, this engine allows different usage modes, ranging from fast Crystal programming using the basic features up to simple script usage, allowing for fast prototyping.

Roadmap

Version 0.3.0

This version number was chosen in order to avoid confusion with legacy versions.

It will be the first proper release since the legacy versions. Most of the work is already done, but many features are still missing or not functioning.

The major goal is to support Launshi and custom SDL-based frontends fully, allowing for a solid Ruby-based game development experience.

Features

Shipectral
  • Ability to compile frontend and engine library into executable
  • Higher stability due to several bugfixes
  • Feature checks
  • CI scripts and automatic builds
Shidacea/SDL
  • Coordinates and colors
  • Window class
  • Textures
  • Keyboard support
  • Render queue with z-order
  • Framerate limiter
  • Scenes
  • Sprites
  • Sounds and music
  • Mouse support
  • Fonts and texts
  • Views
  • Collision Shapes
  • Entity class
  • Scripting utility for entities
  • Entity parameters
  • Consistent property system
  • Resource manager
  • Marshalling support
  • Option to use VSync instead of limiter
  • Game state class
  • Game controller state
  • Full event support
  • Shapes
  • Dedicated tile and map classes
  • Linux support
  • ImGui support
  • Optimizations

Todo

  • Add remaining ImGui functions and classes
  • Fix debug routines
  • More optimization routines

Future versions

Features

  • Find a way to load different shards
  • Better way to update to newer SDL versions
  • Make ImGui optional
  • Support for data marshalling (Crystal and Ruby)
  • Add virtual file system for executable
  • Ressource integration using macros
  • Add a way and flags to put frontend resources directly into executable
  • Particle system
  • Wrappers for vertex arrays
  • Shader support
  • Optimized render queue (if possible)
  • Quadrangle shapes
  • Highly customizable text boxes (including sprites)

Wishlist

  • Other targets like MacOS, WASM, Mobile, Console, ...

Installation

Prerequisites

  • Crystal (Version 1.6.0 or higher)
  • Ruby
  • Rake
  • Git
  • SDL (only on Ubuntu - on Windows they will be installed automatically)

All of these programs need to be in the path environment variable for Windows to work properly.

Make also sure to set CRYSTAL_PATH to the appropriate crystal source path, especially on Windows.

Building

WARNING: Linux builds will most like not work currently.

Note that this current version is only guaranteed to run on Windows 64bit and Ubuntu. You need to run rake in either a terminal (Ubuntu) or the 64bit Visual Studio Command Prompt (Windows).

If you want to use another config file, set the environment variable SHIPECTRAL_CONFIG_FILE to the path of the respective config file (default is configs/launshi_sfml.json).

The final program is under the build (can be changed using the environment variable SHIPECTRAL_BUILD_PATH) path, in the respective directory.

You can run it using the rake test command or by directly executing it from the build directory (on Windows).

shipectral's People

Contributors

hadeweka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

shipectral's Issues

Irregular crashes while using Launshi

If Shipectral is used with the default Launshi project, the program sometimes triggers a segmentation fault when returning from a loaded project to Launshi.

This happens during the Ruby garbage collection routine and seems to result from dangling references from previous window contexts.

Currently I do not have any idea how to fix this, but projects are running completely stable, so the bug can be narrowed down.

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.