Page 1 of 1
#1 999 Noises of Frustration (a newbie gamedev journal)
Posted: Tue Nov 04, 2014 10:01 pm
by rhoenix
Entry #1
After some discussion with other people, in which I realized that most of the programming I've ever done has been for one job or another, I decided to start a project of my own. Helping out others is good and all, but one should also try to work with things they enjoy, so I got web space together with the intent of just doing random web-based programming projects for fun. This was done as an alternative to writing, which for me has been floundering badly.
So, I decided to be somewhat ambitious, and make an RPG game that runs in a browser (with the intent of running equally well on mobile devices as well as PC's), modeled after the games Dragon Warrior 1-3, Final Fantasy 1-6, and Final Fantasy Legend (for the original Game Boy). I have never yet undertaken a project of this scope, even with the relatively simple boundaries in keeping it as a relatively simple RPG, so this is a challenge to myself that I haven't really had, or actually enjoyed for a while.
As usual, there are ten thousand and one things I'd like to be able to do with the game, so I'm trying to forcibly restrain myself with such things, instead focusing on getting something actually working, and then progressing from there.
So.
I am right now trying to sketch up a design document, not only for how the RPG's systems work by themselves, but also how they'll be turned into something with strange symbols in a text file to turn it into a working web-based game. This is taking quite a bit longer than I'd hoped, but that's part of the fun - instead of being frustrated about this, I'm trying to choose to view it as a refreshing challenge, and in so doing, see it as fun.
One thing I've discovered after having done some research the past few days is that the one server-side programming language I had any knowledge of (PHP) is good for things like facebook, but not quite as good for something like a game. Especially because, unlike Facebook, I won't have access to server farms running solid-state disk arrays to speed loading times. There are ways around this in PHP; though they aren't as graceful or workable as they are in other languages, such as Python or Ruby, but unfortunately, I only know some PHP at the moment.
The good news is that the Javascript I've taught myself over the past two years in trying to create a good user lookup tool for where I work is still relevant, and it appears I'll be leaning heavily on Javascript to do most of the heavy lifting for this. The better news is that people have evidently been hard at making Javascript libraries that make things like setting images and animations for objects (like heroes, monsters or items) much easier than if one were to write it all themselves.
In short, this has been an interesting experience thus far, and I haven't even gotten into writing code yet. I'm going to have to have a solid idea for how the RPG's systems themselves work first, and then see how to implement each part in code.
I hope to have the game's design document done by the end of the week, at the rate it's going (and the amount of paper I'm using for doodling ideas on).
#2 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Wed Nov 05, 2014 1:00 am
by LadyTevar
break a leg
#3 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Wed Nov 05, 2014 1:05 am
by rhoenix
Thank you, Tev. This should be an interesting project, and me chronicling my findings will hopefully keep me on track.
Frigid also reminded me that I need to update the Fanfic recs thread I started, so there's that too.
#4 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Fri Nov 07, 2014 9:54 pm
by rhoenix
prelim design doc wrote:
SETTING:
Swords & magic fantasy. Large central kingdom of Oros has High King, smaller client-state kingdoms have Kings who collectively answer to High King. Game begins in frontier kingdom of Pala-Oros,
PLAYER CHARACTERS:
Main character: child of a hunter and a ranger (role: warrior/tank)
Supporting PC#1: friend of main character since childhood, works as an apprentice to an herbalist/healer (role: healer/supporting mage)
Supporting PC#2: friend/rival of main character since childhood, works as an apprentice to local sage (role: supporting/offensive mage)
Supporting PC#3: middle-child prince of the Pala-Oros kingdom, has a reputation of being sneaky (role: supporting/disabling offense)
PROLOGUE:
Since main character's father is away on an extended hunting expedition, King of Pala-Oros summons the best tracker in the kingdom - the main character is the best of those available by miles, so main character gets charged with tracking down middle-child prince (Supporting PC#3), who is missing after the sudden disappearance of the high court advisor. King suspects that the prince tried to follow the advisor and whatever happened to him, and got caught up.
Main character goes to his two friends, (supporting PC's 1 and 2), since he could use the help of a healer and a sage if things get rough in the wilds. The three journey out from the gates of the kingdom, following the tracks and signs left behind. In the depths of a ruin a few miles to the north of the kingdom, the trio find the badly-wounded prince, who explains that he had started getting suspicious of the advisor about a month before this. He found out that the advisor has been stealing from the kingdom, setting up secret deals in the middle of the night with outsiders, and other suspicious activity. The prince went to his father with what he knew, though his father dismissed his concerns.
However, one of the advisor's spies must have been nearby, for the advisor immediately left without a word or a sign. The young prince, angry at how his family and kingdom had been led astray, followed the advisor as far as he could, until he was noticed, and the advisor sent undead after him, wounding him badly enough that he couldn't follow, though he managed to escape.
And thus, the quest to track down the former court advisor begins, and slowly, the former advisor's plans become clear - a hostile takeover of the kingdoms of Pala-Oros with undead armies of uncountable numbers.
ATTRIBUTES:
Strength (affects melee to-hit chance, melee damage)
Agility (dodge/parry/block chance, ranged attack to-hit, ranged attack damage, Defense score bonus)
Will (magic to-hit, magic damage/effect, magic resistance bonus)
Vitality (Life bonus, physical resistance bonus)
DERIVED ATTRIBUTES:
Defense (determines value needed to hit character)
Magic Defense (determines value needed to affect character with hostile magic)
Parry (need to roll Parry versus incoming attack, success reduces damage by 75%)
Block (need to roll Block versus incoming attack, reduces damage by 75%)
Dodge (need to roll Dodge versus incoming attack, reduces damage by 100%)
Melee Attack (to-hit bonus for melee)
Melee Damage Bonus (bonus to all melee damage performed)
Ranged Attack (to-hit bonus for ranged)
Ranged Damage Bonus (bonus to all ranged damage performed)
Magic Attack (to-hit bonus for ranged)
Magic Damage Bonus (bonus to all magic damage/effect performed)
Magic Resistance (reduces all magic damage by this amount, chance to resist magic effects by this value in percent)
Physical Resistance (reduces all physical damage by this amount, chance to resist physical effects by this value in percent)
(note about block/parry/evade: block is attempted first by all characters (but character with no shield equipped cannot block) parry is attempted second by all characters, dodge is attempted last. If one of those is successful, sequence stops with that success; e.g. if knight with shield fails the Block but succeeds the Parry, that character reduces the incoming attack by 75%, with no further chance to Dodge to reduce it to 100%.)
BASIC PC CLASSES:
Warrior, Thief, Mage, Healer
PC SKILL BASICS:
A PC may have up to 3 active abilities, 2 passive abilities, and 2 reaction abilities equipped total. Additional classes become available as PC's progress. Listed below are the abilities for each of the 4 basic classes available to the 4 PC's at the start of the game.
WARRIOR ABILITIES (AP costs next to ability type, in parentheses):
(A 50) Savage Strike (costs 20% HP, does str+5 damage to single target)
(A 50) Reave (costs 25% HP, does ST+1 damage to all targets, increased chance targets will attack him next turn)
(A 50) Guard (Takes 50% damage from all sources for rest of the round, does +50% damage with next attack)
(P 75) Footwork (+5% to damage when using 1-handed melee weapons, +5% Block, +5%Parry)
(P 75) Overhead Stance (+10% to damage when using 2-handed melee weapons, +5% Dodge)
(P 75) Quick Grip (+5% damage, +5% critical chance, +5% Parry)
(R 150) Counter (50% chance to attack at ST+1 when attacked, even if successfully blocked/parried/evaded)
THIEF ABILITIES:
(A 50) Right in the Spleen (costs 20% HP, does ST+5 damage to single target, +25% chance for critical hit)
(A 50) A Stab in the Wallet (costs 20% HP, does ST+4 damage to single target, 2x money received when enemy is slain)
(A 50) You Should Flinch (costs 25% HP, causes next attack to do 1.5x damage)
(P 75) Well, Hello Shiny (+5% to all currency found, +25% chance for item drop)
(P 75) Hey, See That? (-25% chance to be surprised at start of combat, +25% chance for preemptive strike at start of combat)
(P 75) Where It Hurts (+5% chance for critical hit when making an attack, +5% to damage when making an attack)
(R 150) Duck (+5% chance to evade incoming attack)
MAGE ABILITIES:
(A 30) Scorch (causes will+3 fire damage to target, costs 5 MP)
(A 30) Frostbite (causes will+3 ice damage to target, costs 5 MP)
(A 30) Shake (causes will+3 kinetic damage to target, costs 5 MP)
(A 30) Shock (causes will+3 electical damage to target, costs 5 MP)
(A 30) Stun (will+3 cs. enemy's will+1 to succees; success stuns target for Will+1 turns, costs 5 MP)
(P 75) Evoker (+5% to all magic damage)
(P 75) Quick Study (-25% to MP costs, +1 to initiative)
(P 75) Elementalist (gains option to cast a single target elemental spell on all enemies for -2 to effect, and same MP cost)
(R 150) Sidestep (+5% chance to parry and evade incoming physical attacks)
HEALER ABILITIES:
(A 50) Holy Symbol (causes will+3 light damage, costs 5 MP)
(A 50) Cure (heals will+3 HP to ally, costs 5 MP)
(A 50) Heal (removes one negative ailment from ally, costs 5 MP)
(P 75) Watchful Nurse (+5% to all healing done to allies)
(P 75) Peaceful Focus (+5% to all light damage)
(P 75) Calmness (gains option to cast a single target healing spell on all allies for -2 to effect, and same MP cost)
(R 150) Nope (+5% chance to parry and evade incoming physical attacks)
DESIGN REQUIREMENTS:
- overworld map, including all kingdoms of Pala-Oros (multiple maps from overworld map; towns, dungeons, towers, etc.)
- turn-based combat system for hostile encounters
- system for gaining new abilities, better stats from classes
- 40+ hours of gameplay, plus sidequests
(edit #1: made fixes in backstory thanks to Tev's questions)
(edit #2: made additional fixes to backstory, thanks to frigid)
(edit #3: added abilities & estimated costs for each beginning class)
#5 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Sat Nov 08, 2014 5:13 am
by LadyTevar
1. How does the King know to call you? Are you already known in the kingdom for being a tracker?
2. Don't have the friends be 'commanded'. Have them just show up. The Offensive Mage might be friend/lover of the young Prince, worried about him. S/he might even have an idea what the Prince was doing.
3. How did young prince escape? Was he let go, or was he actually part of it until he found out where the money he'd been spending on hookes and blow was coming from?
#6 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Sat Nov 08, 2014 5:01 pm
by rhoenix
LadyTevar wrote:1. How does the King know to call you? Are you already known in the kingdom for being a tracker?
Good point. I'll add that the main character's father is away on a hunting expedition, leaving him as the best tracker in the kingdom at present.
LadyTevar wrote:2. Don't have the friends be 'commanded'. Have them just show up. The Offensive Mage might be friend/lover of the young Prince, worried about him. S/he might even have an idea what the Prince was doing.
A better idea, thank you. He can simply go to his friends and say "Hey, so there's this thing..."
LadyTevar wrote:3. How did young prince escape? Was he let go, or was he actually part of it until he found out where the money he'd been spending on hookes and blow was coming from?
Neither - he got suspicious of the advisor, and started tailing him a short time ago. I'll need to establish that above as well.
#7 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Sun Nov 09, 2014 11:18 am
by frigidmagi
I thought you were gonna have him do this on his own? Although here's an idea, his father is out on a job when the message comes in. Dad might not be back for weeks so MC decides fuck it he'll do it. He's been trying to prove to Dad he's ready for the big time for awhile now anyways.
#8 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Mon Nov 10, 2014 5:57 am
by rhoenix
frigidmagi wrote:I thought you were gonna have him do this on his own? Although here's an idea, his father is out on a job when the message comes in. Dad might not be back for weeks so MC decides fuck it he'll do it. He's been trying to prove to Dad he's ready for the big time for awhile now anyways.
That definitely works.
Also, added basic abilities to start with. I'll add from here, as each new city the PC's venture to is supposed to have new classes as progression for each character. So, I'll designate each kingdom of Oros as a hub city that basically signifies that one's at the next tier of stuff to get.
This is a pattern I'll get the player used to for the first three cities, so when the player has to start hunting a little bit (by talking to people, rescuing kittens from trees for townsfolk, etc.) to make one available, it'll be with the confidence that there will
be an upgrade there to be found.
#9 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Wed Nov 12, 2014 3:25 am
by rhoenix
So - last night as I was going to sleep, I think I figured out how to have a grid-combat system work, similar to how Final Fantasy Tactics, Disgaea, and the like worked. Simple, actually - each space per map would have its own corresponding database entry that details what spaces are next to it, in what relation that space would be to the others, and so on.
However, I'm going to shelve this idea, since actually getting it working would take longer than getting the entire rest of the thing working. We're going with concise here.
#10 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Wed Nov 12, 2014 8:37 pm
by rhoenix
So, class progression.
I'm planning to have each major city provide the next tier of class for each of the PC's, essentially as a milestone. So, when the player gets through all the sidequests and regular quests and gets to the next town, it's a milestone.
Each class will have a total of five tiers to them, the first of which will be granted when the party gets to the first major kingdom of Oros (Warrior, Healer, Mage, Thief). Each tier will have its own distinct flavor, which will then help to inform the attitudes of the people of that kingdom, and vice versa.
I do want there to be a secret sixth tier for each class, that players will have to find per class. These "sixth tier" class upgrades will be sprinkled amongst the other endgame sidequests; I'll be taking a page or two from Shin Megami Tensei: Nocturne handled this.
Speaking of which, I'd like to use some aspects of the SMT series (Digital Devil Saga 1 & 2, Shin Megami Tensei: Nocturne, the Persona series, etc.) combat system its games share. It works pretty much like Dragon Warrior and other similar games, with two important distinctions. First is the idea of the Press Turns, which equate to the number of people in your party; e.g. with a four-person party, you had four Press Turns per turn to use for character actions. Second is the idea of what happens when you hit an enemy's strong point or weak point.
In Nocturne, if you attack an enemy with an attack type they're weak against, you get a free extra Press Turn to use for that turn, allowing you more than the maximum of four actions a turn with four characters in your party. If you hit an enemy with something they're resistant to however, you lose one of your remaining turns. If you hit an enemy with an attack they're immune to, you lose two of your remaining turns, and if you hit an enemy with an attack they absorb life from or outright reflect back at you, you lose all remaining turns. This mechanic affects you as well as the enemy party. This is awesome... but I imagine would take more skill than I have to program the monster AI logic for.
Still though, might be worth it to check out, since it could make combat much more interesting.
#11 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Wed Nov 12, 2014 8:58 pm
by rhoenix
This actually leads me to a decision regarding combat:
Base combat on initiative, or base it on sides?
By basing combat on initiative, combat then feels more chaotic, as sometimes fast enemies will act before you, or your slow mage will feel like it always acts last. However, this can lead rather nicely to needing strategy in a fight.
+ This will be easier to code than a Press Turn system would be.
- No true variation in a combat turn.
By basing combat based on sides (similar to XCOM, the first Final Fantasy game, or the Dragon Warrior games), I can try implementing something akin to the Press Turn system used in the SMT games, wherein you can get extra chances to act if you manage to strike an enemy where its weak... but enemies can also do the same to you.
+ True variation possible in a combat turn, which can be rewarding as well as frustrating, especially when you get to new areas in the game, with new enemy types.
- This will be uglier to code and get right.
#12 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Thu Nov 13, 2014 1:00 pm
by frigidmagi
Are you going to do a straight linear progression or have you thought of having two or more choices for the characters?
#13 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Thu Nov 13, 2014 4:14 pm
by rhoenix
frigidmagi wrote:Are you going to do a straight linear progression or have you thought of having two or more choices for the characters?
To be honest, I haven't decided yet. Implementing a choice of class at any tier would just mean another entry in a spreadsheet and an if/then basically, so it wouldn't be hard from a coding standpoint.
The problem... would be game balance at this point, and making sure each class feels distinct, despite the fact that a PC can still mix and match abilities from earlier mastered classes.
I liked the Fighter > Knight progression in Final Fantasy, so I want to keep that feeling of accomplishment without diluting it. For that reason, I'm even considering trimming down the number of class tiers so it won't have the chance to feel routine for a player.
#14 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Sat Nov 15, 2014 10:03 pm
by rhoenix
Yeah. So, the database stuff won't be the hard part. The Javascript, JSON, AJAX, CSS, and PHP all managing to balance together, however...
In all honesty, even with most of the web page tinkering I've done over the years, I've never once tinkered directly with the DOM model for doing stuff with web pages - in fact, I've studiously avoided doing so. However, not only does it appear that I have to, I'll also have to learn JSON and AJAX, since handling stuff like combat will require talking to the server asynchronously, so that people can't cheat.
If you don't know what any of that means, I don't blame you in the least. In short, it means I'll have to learn more of the technical stuff first before I can actually make the game. So, I can also spend more time making sure the story makes sense, so there's that.
#15 Re: 999 Noises of Frustration (a newbie gamedev journal)
Posted: Tue Nov 18, 2014 7:06 pm
by rhoenix
So, a checklist (along with statuses)
PLANNING ELEMENTS
- basic outline of story
- basic outline of characters, stats, and abilities
- basic outline of enemies
PROGRAMMING ELEMENTS
- sprite-based character, moving through maps, including map transitions to other maps
- encounter rate set per square on maps
- initiative-based battle system
- cutscenes involving on-screen elements