Giter Site home page Giter Site logo

elmcrest-game's Introduction

Elmcrest

Elmcrest is the working title of a turn-based, adventure/role-playing game where the player explores a procedurally generated world.

The game is built with HTML5 and lots of JavaScript.

This is still a very early development feature demo.
This version lacks content and therefore is not really playable by now.

This repo does not necessarily represent the current state of development.
Progress may be updated from time to time.

If you want to contribute or have any questions reach out to me @coldi.

Game preview

๐Ÿ’ฏ Features

  • Procedurally generated game world with different biomes
  • Hexagonal grid system
  • Pathfinding
  • Turn-based action point system
  • WebGL weather effects with day/night cycle
  • Event system with text-based dialogs and multiple choices
  • Inventory and equipment system
  • Affix-based item generation with different quality levels
  • Management of multiple group characters
  • Experience and level system
  • Skill tree and skill progression
  • Turn-based combat system
  • Basic survival mechanics with water/food/energy consumption
  • NPCs that move around randomly
  • Game configuration and scripts at runtime enable user-generated content
  • Save/load game state
  • Localization

๐Ÿ•น Run / build the game

Install dependencies with yarn install.

Start the development mode with yarn run start.

Make a build with yarn run build.
To run the production build in your browser, you need something like http-server ./build.

Use latest Chrome browser!

๐Ÿ“š Used libraries

  • Redux for state management and game logic
  • React for game UI
  • Pixi.js for rendering of game world
  • RxJS for action-based subscriptions between game modules

Why?

This thing started out as a learning project for Redux, but grew into something bigger after a couple of months. One reason is, that using Redux and React for a game like this is pretty fun in my opinion. Another reason is, that even after a year of working on it as a side project, it stayed quite maintainable and most things just worked out as intended.
However, world performance is an issue I have yet to figure out how to do it right/fast. It just works in the first place! ๐Ÿ˜…

๐Ÿ“‚ Project structure

/assets

Contains all types of game contents:

  • Configurations (e.g. field types, skill parameters, item qualities, ...)
  • Scripts (e.g. events, skills, locales, ...)
  • Textures

/modules

Contains the core game logic, bundled by features.
More information on module structure can be found in modules/README.md.

/scripts (deprecated)

/setup

Contains the setup scripts that load configuration files from assets/ and transform them into the game state.

/styles

Contains global SCSS mixins, variables and styling for the UI.

/views

Contains the game UI. This is React components land.

๐Ÿ™Œ Acknowledgments

Hexagonal tileset by CuddlyColin

elmcrest-game's People

Contributors

coldi avatar

Watchers

 avatar  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.