Gameplay: This is a game that will be designed to teach non-programming gamers the basics of how ruby works. The combat gameplay will hopefully resemble final fantasy 3 with an active battle system and progress bar (www.youtube.com/watch?v=eo6JJBlcoPs) instead of focusing on menu navigation the gameplay of Ruby Quest would focus on using ruby syntax to attack enemies, cast spells, and use items. The user would start out just making method calls like slime.attack and as they get comfortable calling methods on objects we can start introducing new concepts like picking an item out of an array or a hash. Definig a method for a complex combo attack. (Tutorial: What method of attack are you going to use?) The player would have to use their ingame currency to unlock a small quip (called lore in the gaming world) about how the thing they are learning ties into the program world and then can further unlock examples of how it can be used.
Since I’m required to have an API in this project I’ve decided to integrate the weather underground API which will serve up different maps based on the current weather of new york city. Example if its 70 and nice out it will be a spring time map. If its below 32f the same map would be snow covered. If it is above 100f the map would be a field of mamga. Some other ideas of weather integration is tying monsters of specific affinity (earth, wind, fire, water) to dew point, current wind speed, and if I want to get crazy with this, an api based on tectonic shifts.
My ultimate goal is to take a non-programmer gamer and make them savy enough that they are able to use define methods, understand how classes work and be able to call Class.new to “summon” things to fight for them. I hope this eventually pique’s their interest enough that they try to start hacking the gamefiles (since its hosted on github) and make their own mods to the game.
Weather Underground API integration and how it fits in:
This JSON request goes to weatherunderground and gets the temperature for new york city. The view of the town that is served to the player will be predicated on the real weather conditions of new york city. If I can figure out how to make the map dark to resemble night time or add in other weather effects like rian or snow I will but those are end stretch goals.
require ‘json’ require ‘rest-client’
my_api_key = ENV
res = JSON.load(RestClient.get(“api.wunderground.com/api/#{<%=ENV%>}/conditions/q/NY/New_York.json”))
@temp = res[“temp_f”]
Resources
MDN - Mozilla developer network : (https://developer.mozilla.org/en-US/) - canvas - vector graphic scale Checkboxes that are buttons for true false - call divs in and out (http://tympanus.net/codrops/2012/12/17/css-click-events/) Transitions - use for battle (http://tympanus.net/codrops/2012/01/30/page-transitions-with-css3/) Glowing selector for ground tiles (http://designshack.net/articles/css/5-cool-css-hover-effects-you-can-copy-and-paste) /Glow/ -webkit-box-shadow: 0px 0px 20px rgba(255,255,255,0.8); -moz-box-shadow: 0px 0px 20px rgba(255,255,255,0.8); box-shadow: 0px 0px 20px rgba(255,255,255,0.8); } Making it snow (http://designshack.net/articles/css/make-it-snow-on-your-website-with-css-keyframe-animations/) (https://stackoverflow.com/questions/19882060/use-background-image-and-apply-css-animations-over-the-top-of-it) Weather Underground API (http://www.wunderground.com/weather/api/d/docs?MR=1)
DEVELOPMENT CYCLE
Order of development get background assets basic rails app gems requirements add two towns to application views
Set up
town map view welcome menu/index combat screen write tests for character (M~>V~>C) character (MVC) write tests for monster (M~>V~>C) battle (MVC) navigation database with items that have mvc
Add A user log in Functional API Call
Stretch goals
Use params to capture where the character was and then have them walk to the new location in the new view. Add items Add currency Add Rain and snow effects Add day and night cycles Make avatar walk around map.
Fall Back application: App that servers up a wall of images or gifs based on the weather. Fall Back application: Prose Factor
DATA STRUCTURE
Models Hero Monster Items NPC
View Maps Battle Store
Controller Store purchases Battle
-serves up proper assets for battle with
Map change
Databases
Main Tables
Characters, Monsters, Skills, Encounters, Items Characters name:string, class:string, level:integer, experience:integer, hit_points:integer, magic_points:integer, inventory_id:integer, has many *:skills, *:items Monsters has many :skills **has one :inventory *Skills #can survive with just using monster.attack has many :characters, :monsters Encounters **Items
Joiner Tables
Monster Parties *inventory
-
first stretch tier
-
** - second stretch tier
Challenges
Making a semi-static webpage feel like a game without using javascript
- The background image of the website will serve as the map. - use params to capture player position, input, and currently loaded assets from view to view. - use clickable divs and responsive web design to make a map navigable. Make the character animated without javascript - turn sprite sheets into gifs
Its a huge project
- break it down to the core components (MVP) and then try to get stretch goals
I needed to make my project engaging so I could learn as much as possible. I observed that I get the most excited about writing code when it is tied to one of my interest. Gaming has been a life long passion so I thought that hacking a game together would be a great anchor to get me to focus on the project.