This is a community learning project for game dev in Ruby. We'll be using DragonRuby, lots of POROs, and doing TDD with RSpec. I'm a complete n00b at game dev, so if nothing else, you'll get to see me struggle live! ;)
The game will attempt to be a top down, sprite-based, deep colony sim (like Dwarf Fortress, Rimworld, Prison Architect, etc.) except we'll be the "bad guys" in this one! Our citizens will be orcs/goblins/somekindanasties instead of those weirdo hooman creatures (because that's just boring)!
Initially, I'm planning to divide the code into two major parts: procedural world generation and game play. No idea how to do either, so we'll learn together!
- Because game dev is a very different way of thinking from web dev and this will stretch the programming muscles
- Because I'm a big gamer and I've always wanted to understand better how this stuff works.
- Because it seemed like folks were interested in this, so it should make for an entertaining show.
- Because I keep wanting to play this game, but nobody's made it yet! So we will!
- Because I want to, so there!
- game development (duh!)
- learn new Ruby programming paradigms and patterns (otuside of web apps)
- observer patterns
- state machines
- array/hash wizardry
- loop efficiencies (games are loops within loops within loops. Efficiency is super important!)
- efficient in-memory data structures
- serializing/deserializing efficiently (game save/load)
- learning how to test game operation
- clone the repo
- cd into the project root
./dragonruby
- have fun!
There are lots of ways to contribute to this project! And most of them don't cost a thing! Here are a few:
- test the game and create bug tickets if you break something!
- suggest improvements to the game or the code. Throw an enhancement ticket in!
- pick a ticket and fix it with a PR you freakin' genius! (make sure you branch from "develop")
- join me on the live stream on YouTube or Twitch every Tuesday at 3pm EST and be part of the discussion! Snarky comments, sarcasm and Dad Jokes are welcome!
- Invite your friends to come with you!
- Tweet about what awesome, fun times you have hanging out with us so other people will know!
- join me on Discord and hang out in the cave-lords-pond!
- follow me on Twitter cause it makes me feel loved!
- subscribe on YouTube cause it makes me feel loved!
- follow me on Twitch cause it makes me feel...wait a tick, I sense a pattern here!
- DO be vocal (not rude) about ideas! All ideas are good ideas. Not ALL ideas can be included, but every idea will teach us something!
- DO submit tickets if you find/notice bugs, or have ideas for improvements or features!
- DO make a quick scan to see if your bug/idea has already been ticketed
- DO feel free to pick a ticket and give a PR a shot, you awesome coder you! (if you're a new programmer, try this search to find good first PRs)
- DO write RSpec tests for your PRs! PRs must have passing RSpec proofs if at all possible. If you're not sure how to test something, hop in the Discord and ask. We'll help!
- DO try to give newer devs a chance to work on issues labelled "good first issue"
- DO think hard about single responsibility and separation of concerns. These things are important to keep game code clean and understandable. It can quickly turn nasty if these things aren't front-of-mind!
- DO review others' PRs to learn and share your insights! (I only have one brain and limited time so I'll need some community backup!)
- DO feel free to fork this repo and get as far ahead of the show as you like (you do you baby)! Just make sure to read the license section below so you don't do something naughty!
- DON'T get ahead of the show in the PRs. Only work on PRs that are relevent to the current state of the game and things we've talked about on the show. Otherwise, I'll get very confused.
- DON'T write spaghetti code! It's full of carbs! And I'm on keto!
- DON'T sell, package or redistribute this code. It's other people's work, given to the community freely. Taking advantage of that is a dick move. (though using concepts and learnings from this to write your own game is HIGHLY encouraged! I'll want to play it!)
You're so sweet! Here are the places I hang out the most:
This repository and it's code will be governed by the RSALV2 license agreement. (Thanks @mediafinger for the suggestion!)
Please read the license, but basically, what I'm trying to accomplish is:
- you can use this code to learn from, contribute to, and spread knowledge (that's the whole point of this project)
- you can't sell it or make money from it.
I personally promise: If this work DOES ever get monitized as a product in some way (like for some reason people buy it on itch.io or something), the TOTALITY of any monitary gains will be donated, in full, to reputable charities that serve disadvantaged and/or sick children.