Git Product home page Git Product logo

batbucket / runityscape Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 14.0 200.89 MB

Text-based browser roleplaying game built in Unity. Currently working on significantly more updated fork https://github.com/lizard-entertainment/runityscape. Don't fork this one!

Home Page: https://gamejolt.com/games/monsterscape/270136

License: MIT License

C# 100.00%
text-rpg roleplaying-game unity game-development rpg-engine development-paused

runityscape's Introduction

MonsterScape

  • An in-development text-based role-playing game project for browser play
  • Written in the Unity engine using C#

TODOs after Downloading

  • Setup the fields needed for the GameJolt API to work. From the editor, Edit โ†’ Project Settings โ†’ Game Jolt API

Other Plugins

  • NUnit for unit testing
  • Unity API for GameJolt, modified slightly

Demo

Old Version (deprecated)

  • Here as a download
  • The downloadable version only works on devices with a screen ratio of 16:9. Other dimensions may cause cutoffs

Game Features

  • Turn-based combat
  • NPC AI
  • Spell system with buff support
  • Item system
  • Inventory system
  • Equipment system
  • Character statistics

Technical Features

  • JSON serialization for saving and loading data
    • Object-oriented serialization system that allows for extensions
      • Each object that needs to be serialized implements ISaveable<T> where T is an equivalent class that holds serializable data
        • Examples: Character : ISaveable<CharacterSave>, Buff : ISaveable<BuffSave>
    • This is achieved through an ID Table, which associates each unique type with a unique string
      • The table automatically checks that each type and string is unique
      • The table has an associated unit test segment that ensures that all serializable content is included in itself
      • This table also allows class names to be changed without impacting any saves
  • Dynamic object pooling system for performance
    • Requires inheritance from the abstract PooledBehaviour, which handles the resetting of fields
    • Object pooler will call Instantiate on GameObjects if it runs out of pooled objects of a specific type, dynamically increasing the size of the object pool as neccessary
    • Object pooler will reject already-returned objects, performing a contains check on a HashSet using the object's InstanceID as its hash
  • Uses GameJolt's API for scoreboards and achievements
  • Saves can be exported and imported using into GameJolt's data storage by associating it with a unique key
    • This reduces the ~1770 character save string to a more manageable 1-8 character string
    • This is needed because WebGL prevents the use of the clipboard
  • Programmed a solution for maintaining references when serializing
    • For instance, if A casts a buff on B that redirects damage taken by B to A, the game will maintain that reference between loads
  • Code structure based on the Model-View-Presenter pattern
  • Heavy use of object-oriented programming and lambda expressions
  • Regex-based string parser for writing text one letter at a time, while maintaining word wrap for the full string, and allowing rich text tags
  • Regex-based string parser for easily creating dialogue for characters by detecting specific tags in a string
  • Wrote unit tests to test the serialization process
  • Flyweight pattern used to store constant string, integer, and color values

runityscape's People

Contributors

batbucket avatar brandonxia01 avatar ubitquitin avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

runityscape's Issues

NERF grinding again

not 1 exp per enemy defeated if exceed level, make it so 1 exp per battle won

Out of memory error

Resting for 54 days causes textboxes to occupy too much memory.
Solution: Start deleting old textboxes at some predetermined number.

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.