Coder Social home page Coder Social logo

tiier's Introduction

Tiier

A game idea written in Elm

Well instead of a game this has sort of turned into more of a map generator experiment I was playing with?

Influence/Credits

  • Brogue
    • Brogue plays a huge influence in the stylization and choices behind the design to Tiier

How To

  • Clone repo
  • cd into repo
  • Run elm make --output=elm.js src/Main.elm
  • Open the index.html file

Contribution

Want to help? I am building Tiier purely as a side project for fun, and to have fun with Elm and try to become better at using it. Feel free to join in on the fun! That could be literally anything!

  • Creating Issues to break down larger tasks or even for tasks I haven't even thought of yet!
    • Ask questions here too! And maybe we will make it a task or feature if your question leads to it!
  • Creating PRs with additions to the game
  • Creating PRs with fixes to my code that you think could be way better
    • I don't doubt this will be a thing so please explain in your PR why it's better so I can learn!
  • Writing lore and story points!
    • You can checkout the already in place lore here
  • Spreading the word!
    • Share the repo, and help me expand it
  • And there are plenty more ways to help out. Just try!

Rando Resources

Credit

tiier's People

Contributors

dhershman1 avatar

Watchers

James Cloos avatar  avatar  avatar

tiier's Issues

Controls

Controls will be an ongoing task but I want to get the basics done, and able to navigate and control a newly created character.

  • Movement controls
  • Attack controls(?)
  • Skill controls
  • Use item controls
  • Interaction controls
  • Hot keys
  • Allowing remapping of keys

?: It is unclear to me whether this will be live action combat (probably much harder than it's worth) or if it will take more of a auto combat role with skills, or even maybe a classic turn based combat system.

Server/Backend

So we are going to also need to setup a server or backend of some kind in order to properly serve up the game itself as well as the data it will need.

A simple REST API will be more than enough for this.

The question lies in this: what exactly do we build it in?

  • Clojure
  • Node
  • Something else entirely?

I am leaning more towards the clojure side of things, so I can finally build out an official clojure server.

The API will have to be able to:

  • Save user players
  • Retrieve user players
  • Delete user players
  • Retrieve Map data
  • Retrieve item data (this is up in the air as idk if we want to generate items on the fly)
  • Retrieve monster data (again may be generated on the fly)

Those are the very basics at the moment.

Foundation

First things first we need to lay out the foundation and ground work

  • Browser/Page in place
  • Groundwork data models and the like done
  • Basic Architecture in place
  • Style guide in place
  • Guidelines added

Database Setup

We will need a DB setup to plug the game into.

The database will be responsible for:

  • Users accounts and characters
    • The user information will be very basic, probably just an email (or username) and a password (encrypted of course)
  • Map information
  • Item and equipment information
  • Monster and NPC information
  • Trap information
  • Event information
  • Quest information
  • Abilities/Spells information
  • Skills information

The tables would be broken down to meet such requirements

  • Users Table
  • Character table for character information and stats
  • Items table
    • Quest Item Table
    • Consumable Item Table
  • Gear/Equipment Table(s)
    • Weapons Table
    • Armor Table
  • Traps table
  • Events table
  • Quest Table
  • Abilities and Spells Table
  • Monsters & NPC Table
  • Skills Table (Maybe merge this in with Abilities/Spells?)

Basic Character Creation

We don't have the data fully fleshed out just yet on how much we want to take into consideration for a lot of things, currently I only have a basic set of skills/stats

  • Able to create a new character
  • Character creation screen
  • Able to name and set custom stats
  • Able to set skills
  • Create character backstory
  • Slight character customization
  • Choose some starting gear

Item Hierarchy

Just so I don't forget I want to have a place to put item hierarchy ideas and thoughts.

Current Hierarchy Best to Worst (and their assigned coloring):

  • Ancient <orange>
  • Primal <red>
  • Artifact <purple>
  • Rare <blue>
  • Magical <green>
  • Basic <white/grey>

Basic UI

The basic UI needs and wants

  • Main menu theme
  • Main menu options
  • Able to be interacted with
  • Can visit multiple screens/views
  • Character Creation Screen

Styleguide

We need to figure out how we want the game to look and feel.

The overall idea is a ascii art based game, but we want to make the game look and feel enjoyable ontop of the game play itself.

  • Basic overall theme
  • Fonts
  • Coloring choices for different aspects
  • Content delivery
    • Example: Like how the text is printed onto the page

Grid/Map

Obviously the most important foundation for this is the Grid system the player and game will live inside. As well as the map behind it.

The idea here is to do something similar to most other crawlers like Binding of Isaac, Moonlighters, etc... A Room based map

So the map itself is a grouping of rooms, each room is it's own grid this removes the need to needing to persist the map as the user moves and uncovers it. This can be applied the "world map" As well, since it can be divided into "tiers" so to speak.

A map is generated and then the player steps into a room which applies the grid, and environment to it.

Note: We should probably make sure the map builds based on screen size, that way the grid is within bounds and doesn't go off screen

  • Grid System
    • Generating coordinate based grid points
    • The Grid is viewable in a actual column/row layout
    • Grid system takes screen size into account
  • Map Generation
    • Map room layout
    • Make sure rooms are some how connected
    • Generate a starting and exiting area
    • Procedural "room" generation
    • Generate Terrain
    • Intelligently set cells like traps/loot/monsters/etc
    • Intelligently design terrain and impassible obstacles like forests
  • Persist Rooms while player remains on map
  • Persist a state for rooms the player has already entered
  • Generate Map Seeds

So the idea is to use seeds, a map has a seed for what it is, these will remain static (I think) for now. Each map will have a List of randomly generated Room Seeds which is re generated upon entry of a map, there for making all of the rooms re generated, as well as the amount of them random. This of course will be kept within reason. (Need to prevent the first dungeon a user encounters from having like 25 rooms)

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.