![]() |
| Forums | Gaming News | Videos | Downloads | Today's Posts | Mark Forums Read | Chat | FAQ | Members List | Contact |
| ||||||
This is a discussion on How to Create an RPG within the PSP Development Forum forums, part of the PSP Development, Hacks, and Homebrew category; (This is just a draft.... any suggestions etc, make a reply and lets edit this into a coherant document...) This ...
![]() |
|
|
LinkBack | Thread Tools |
|
|
#1 |
![]() |
(This is just a draft.... any suggestions etc, make a reply and lets edit this into a coherant document...) This is just a random dump of info....
How to Program an RPG ===================== I've written this up because of the overwhelming amount of new programmers trying to create an RPG on places like the PSP Development forum on QJ is never ending. They often lack basic grounding in what goes into a game like an RPG. I got tired of common questions like 'What is a tile engine?'. This is written from the perspective of creating an old school style tile RPG, not some 3D first person Bethesda piece of crap. Some things are easier done in one language over another language, but I plan on keeping things language agnostic. If you want to use C and SDL, great, if you want to use python, great, or LuaPlayer etc. If your planning on making a Legend of Zelda clone, stop now, the world has enough of this garbage already. Make something like it, just not another crap Zelda clone. Don't steal the Zelda sprites, don't call your main character Zelda or Link or that. Its easier to copy, its harder to create. Give me something NEW to play. First thing, understand that creating an RPG is a massive undertaking. It wont be easy, but its nowhere near impossible. An RPG game consists of a few main parts. 0 - The Story. You need one. 1 - The "world". This is the screen your character/party wander around in. Quite often its show with an overhead display, an icon for trees, an icon for mountains, etc. 2 - Shopping. Most RPG's have some mechanism for the buying and selling of goods, weapons, armour etc. 3 - NPC Interaction. Usually this just involves talking to people. 4 - Combat. Fighting enemies for loot and experience. Implementation of the World ========================= === Newbie's first big mistakes are often to draw screen size images and call them the maps. This can work but its a very time consuming and arduous process. The best method is to use tiles and create tile maps. This is done by breaking things down to say 16x16 or 32x32 or some other nice sized icon. Draw a tile for grass, water, mountains, a town etc. Fire up your paint program, decide how many tiles of width/length you want, eg: 200x200. Fill the screen with blue (usually colour #1), this will be the sea, use the green pixel colour for grass, brown for mountains etc. 'Paint' your landscape. It will look like an abstract geographical map. Using tile maps this way, its easier to use 8bit images (256 colours) than hicolour images unless you want to mess with RGB mappings to tiles. This is your tile map. It tells you how to translate this zoomed out image into the zoomed image. Every time you see a blue pixel on the map, you draw your 16x16 sea icon. You can then make some abstractions based on your tilemap, for convenience. If you know tile #1 is your sea tile, you know the player cant 'walk' onto it. If tile #5 is your mountain tile, you know the player cant walk over it. With very little work you have given yourself some minimal form of pathing/bounding controlling where the player can and can't go. You can take tile mapping to extremes if you want using multiple maps for a single screen, for example you can use a base layer map to show land vs sea vs mountains. The next layer can be used for things like overlays, putting round edges on the coastline, streams/rivers, roads. You could have another layer just for pathing if you wanted to control it that way. There is nothing to say you have to cram everything into a single layer. NPC Interaction =============== Hey, we skipped shopping. Technically we did and we didn't. Shopping is just another form of NPC Interaction. We can interact with NPCs in several ways, mostly it will be some form of conversation, but it may be in the form of a shop. Conversation can be done many ways. The easiest is probably a keyword based conversation. You have a dictionary of special words you can ask the NPC about (eg: Hello, Job, The Big Foozle, Princess Ugly, etc). And when asked a keyword, the NPC will respond with a sentence. You could also do a branching conversation. Start with presenting the Player with 3 items to chose from. Choice 1 leads to branch 2, choice 2 to branch 3 and choice 3 to branch 4. Branch 2 might have another 3 questions the Player might ask the NPC. Combat ====== This is a big topic. Combat systems come in many shapes, sizes and flavours. You have classic stuff like Ultimas iconic mode combat, SSI's gold box tactical combat, or the many variations of the (imo) awful Final Fantasy style battle systems. Combat can be done in several ways, as far as time management goes. You have, two broad categories, realtime and turn based with some in between things. Combat is defined by its rules. Its random dice rolls give us life or death. You can make combat really simple or really complex. Really simple is a You Go, I go mechanic and we each take turns hitting each other until one of us dies. Really complex is fastest monster goes first, I hit them, wait, I compare my sword skill to my weapon, calculate a strength skill ratio, check if I actually hit my opponent, if so, how much damage did I do, did I break my weapon? Did their armour absorb my attack. Were they knocked backward by my huge ass Final Fantasy Sword that's twice as big as me? Is my Dexterity enough to swing it? What? they have a magic shield that bounces all attacks back to me... oh crap, I dropped a fireball at my feet and blew myself up, but I just back flip out of the way.. oh, you mean my heavy plate armour wont let me back flip... Even really simple can get really complex really fast. Lets take simple, I have a Sword that does 1-4 points damage. My Enemy has a axe, it does 2-5 points. We each take turns continually hitting, I hit from 1-4 all the time, they do 2-5 all the time. That's no fun, sometimes you need to miss right? OK, so... we uh roll a random number and say 25% of the time you miss the player. OK, now its more fun as I can sometimes beat someone who has more hit points than me.. but wait, I've been playing this game for hours and I'm at the final battle, I'm so super cool with my sword why am I missing 25% of the time? I'm an Olympic sword fighting champion?? If every 4th attack misses, that's a lot of misses. Suddenly we need some kind of metric that we can reduce the miss rate of the player as they get better... If they start as a level 1 player, should they miss 90% of the time? that's no fun. If they miss more than they hit at the start of the game it will be very frustrating... That's cool, you can be an Olympic Fencing champion but I have fireball.... Combat should not always be a winning approach. The player needs to be challenged, if every combt they come out just fine, they will get bored. Any time the player enters combat, they must have the doubt of winning. Data Structures =============== In all of this we have glossed over some very important technical details, that of our data structures. This will often dictate how we design something. How many items can I carry? how much gold.. Is food stored on a per party game basis or do characters carry food? The R in RPG ============ Wile most of what's gone before here was technical in nature, its time to look at other things. Like that of the story, and how you are going to implement it and other fine details. It cant be stressed hard enough just how much design you need to do before you start programming. Getting half way through your game and realising you need to change something fundamental is a serious mistake. Serious design considerations you need to think about up front are things like; - Do you want to use a skill system or a class based system? (eg: Fighter, Mage, Thief vs Sword fighting, Lock Picking, VCR Setup). - Do you want to control a single player or have a party? This kind of decision impacts things like inventory management, and such. - Do I want things like Perm death or should the player be continually resurrected from where he left off? - Do I want to make something like Ultima or do I want to create some kind of JPRG like Dragon Warrior? - How will magic work in my game? - Will I all save games from anywhere in my game world or only at waypoints? Multiple saves? - What role will money play in my game. - What kind of stats and affects will there be (eg: Poison, haste, speed, dead) that can affect players. - What kind of items will there be? - How will I level up my players? - Will I use Hit Points and Manna? An energy bar? flying cars? Think of your overall story. What will be the pinnacle of this story, rescuing the princess, capturing the flag, killing the foozle. Whatever it is, needs to be epic, the player has just spent hours going through your game. Keep the end in mind and work backwards. Write the solution to your game before you do anything else. My Player starts here in the town of Foo, with no money. The woodcutter tells of his missing daughter and gives you a special prized axe. He says she might have been taken to the town of Bar, which is nearby. At Bar, I fight my way to the castle throne room, and confront the king. We fight! I win and rescue the woodcutters daughter and take her home. Expand your one paragraph plot synopsis to two, three, four. Write down the names of towns, the names of people. Start creating an atlas. Draw on paper a map of your world, show me where the towns are. In each town write down what characters are living there, their names, what they do and keywords of what they know. Create a living history of your world. If your world is epic in scope, explain why a character on one side of the world knows what's going on, on the other side of the world when geographically they have an ocean between them! If the sheep herder on the steppes of the mountains knows why pirates are attacking the town on a different continent, I want to know how he knows.. Oh his brother is a pirate and he has a letter that explains that their father is ill, and if you deliver it, it will stop the pirates attacking the town! Hey we just made a side quest, and explained how two events are linked.. We didn't explain why we would be looking for the answer to that puzzle here in the mountains tho. Hey cool, this is the kind of information you can add to a character in the town "I heard his brother didn't like being a pirate and moved to the Mountains of Cold Rock to farm sheep and live a quiet life". We don't have to rescue the town from pirates, but we could fight them all in their ships (an overwhelming number but not impossible), or we could find a peaceful solution. Wouldn't it be cool, when the pirates are dealt with the town would be grateful to us and lower its prices of food and weapons? Multiple solutions are cool, puzzles that don't HAVE to be completed to solve the game are cool, unintended consequences are even more cool (lower prices). Once you have this atlas, your cheating guidebook, you can begin to write your game. You will find it becomes REALLY easy to do, once you have it all in front of you. This also helps you to stop adding features as you go. Using the above, we know we need to control prices in shops for everything they sell. We need to know that we have solved the pirate problem. We need to be able to carry quest items (things we shouldn't probably sell off), we know we will need to have land combat and sea combat. We know we need to interrogate people about subjects (keywords). The Economy =========== Every world needs a working economy. This is buying and selling stuff, eating food, etc. Its also about farming and running loads of useless weapons back to the shop so you've got more money to buy food to keep you alive.. The Economy is important in any game. Its the baseline of who much your gold is worth. Games are the start are always light on gold, its the bane of any new player, to have enough gold to get good items, and its the bane of the end game. What do you do with 10000000000 gold pieces half way through the game? You have to balance your economy. Maybe shopkeepers don't want to buy your old ****, they already have plenty of daggers. Having shops not buy stuff back is a good way to stop pack mules from carting gear around but it doesn't stop farming (for xp/gold). Any way the player can find to break your economy will break your game. Maybe the best thing to do is not to have gold in your game or money. Give the player some starting gear What's the biggest bane of any online game right now? Chinese Farmers! Gold Spam all over the place. If people want to cheat they will find ways, but breaking the economy of your game is a really bad deal. Some thoughts on economy for you to think about; - Scrap money altogether - Don't allow selling in shops - Each time the player enters town have them pay a tax (Sorry, king demands 30% of your gold as tax for being in his kingdom). - Be frugal with monetary rewards, gear is a better reward than money. The Evil Spreadsheet ==================== A spreadsheet will seriously help you out as far as balance goes. Get one, use it. In one column write down the name of the weapon, then fill out other columns like does it need two hands? what skill + level or character class is required to wield it, how much it normally costs in shops, and most important, what its minimum and maximum damage it can do. Use another spreadsheet and write down your monsters. Name, skills etc, and what kind of damage they do (note here, we are not thinking they have inventories like the player, if they do just refer back to the weapon sheet). Think about where in the game the player is going to encounter these monsters and what kind of equipment the player will have on them. Example, in areas around the start of game, the player will be weak, without much money or equipment. Having them fight a pack of Super Life Stealing Trolls that are twice as fast and kill with one touch is no fun for the player. Similarly being at the end game and confronting a couple of low level kobolds is no fun or challenge. The idea is to balance out the game somewhat, we can tell what kind of weapons the player will be using at various stages of the game vs monsters they will be facing. If all they have is a dagger that does 3-6 points of damage, fighting the Kobold Chief who has 10000 hit points will be a very frustrating game. (Hey.. zoning the game is another use for a tilemap layer... Only generate monsters of Type X (Orc, Kobold, Acid Drop, Wild Dog) when player is in zone X. If player is in zone Y generate (Mummy, Vampire, Zombie)... Wow these tile map layers are coming in handy... Remember that question I asked about above "What role will money play in my game?" Money is a big balancing issue. At the start you can never have enough to buy the good gear, after half way, you usually end up with more money than you can spend... Think about how you might solve that problem... Why is "Long Sword +100" ridiculous? (Hint.. Why do you need +100?) Download a tool like OpenProj (java, http://openproj.org/ ) or ToDoList (from http://www.abstractspoon.com ), and use it! Both do similar things. Make your first item "Write down game synopsis", make a couple of child entries under that "Complete Walkthrough / Solution", "World Atlas", etc. Plan out your game. Don't worry about things like "this item will take 1 day to complete", just plot out your items, all the things you need to do to complete your game. You could also just do this in a spreadsheet too. Work out how much XP monsters give. Will the player max out at level 10 or 100 by mid game? You want them to peak just before end game or just after end game... Not halfway through. Its like the too much money situation. Testing ======= Testing will be a huge part of the cycle. Best thing to do is test it yourself. We don't want WIP Beta Test #4 for upload when all you did was change the title screen. Do your own testing until the game is fairly complete, and winnable. Don't release chapters, don't release every other week. Complete the game and make it winnable, THEN release it for testing. If you release it for testing every other bug fix or map change like people currently do on QJ PSP Dev Forums, you will end up making someone else's game. Your responses will be "This is cool, how about implementing X" or "I really miss the option to do Z", Suddenly your adding option Z and its not really your game anymore, its someone else's design and vision. Did you stop and think how option Z affects your game? Is it now unbalanced? -Stu
__________________
-- Code Monkey : Sarien, Fishguts, Cracks and Crevices -- "Did IQ's just drop sharply while I was away?" (Ripley) |
|
|
|
|
|
#2 |
![]() |
Thanks, Lol I know I was one of those people
__________________
My Releases: --------------------------------------------------- [URL="http://forums.qj.net/showthread.php?t=145654"]ROFLFlasher[/URL] [URL="http://forums.qj.net/showthread.php?t=144892"]DTS MGS Edition[/URL] [URL="http://forums.qj.net/showthread.php?t=143735"]Arkanoid Deluxe Beta[/URL] [URL="http://forums.qj.net/showthread.php?p=2144700#post2144700"]SAVIOR![/URL] |
|
|
|
|
|
#3 |
![]() Enter Custom Title
|
The term 'RPG' is overused ALOT now.
Sum so called 'RPG' are just messed most without the main thing in a RPG "A STORY" without a story u'd just be doing things without any achievement, Goal or twist in the plot. Take mario 4 example, especial the first few. You go to a castle. see princess peach go close to her and OH wait! its bowser in a disguise. Thats a common twist.Something unexpected happens. Every RPG should follow the basis of a storyline the same way a movie does. Add That
|
|
|
|
|
|
#5 |
|
Banned from QJ for LIFE
|
Funny, a good guide but by someone who doesn't like the battling in one of the best series of rpgs and called Bethesda crap. lol
![]() Dan - Mario is a platformer not a RPG!!!!! You should have used something like Aeris/Aerith dieing in FF7 as a example of a GREAT RPG twist. P.s Damn i wanted my 500th post to be more worthwhile then that.
|
|
|
|
|
|
#6 | |
![]() |
Quote:
Plus aerith isnt really a twist, its a plot device to further the story and make you sad ![]() Knights of the Old Republic has a twist, or at least how i define a storyline twist. I wont spoil it for anyone but its also along the same lines as STALKER's twist. |
|
|
|
|
|
|
#7 |
![]() |
*Cough Cough* I know the damn while loop!
__________________
My Releases: --------------------------------------------------- [URL="http://forums.qj.net/showthread.php?t=145654"]ROFLFlasher[/URL] [URL="http://forums.qj.net/showthread.php?t=144892"]DTS MGS Edition[/URL] [URL="http://forums.qj.net/showthread.php?t=143735"]Arkanoid Deluxe Beta[/URL] [URL="http://forums.qj.net/showthread.php?p=2144700#post2144700"]SAVIOR![/URL] |
|
|
|
|
|
#8 | |
![]() |
Quote:
![]() as for bethesda, they make FPS's, not RPGs. Maybe if I list my favourite RPG's you'll know where I am coming from? (Magic Candle I, Wasteland, Ultima III, Demons Winter, Pool of Radiance, Azure Bonds, etc, gold box stuff, Questron II, etc).
__________________
-- Code Monkey : Sarien, Fishguts, Cracks and Crevices -- "Did IQ's just drop sharply while I was away?" (Ripley) |
|
|
|
|
|
|
#9 | |
![]() Enter Custom Title
|
Quote:
What about the Mario RPG for snes??? (or is it nes) Even though its crap but its still a RPG
|
|
|
|
|
|
|
#11 |
|
Banned for LIFE
|
|
|
|
|
|
|
#13 |
![]() Enter Custom Title
|
|
|
|
|
|
|
#14 | |
|
Banned for LIFE
|
Quote:
But it DOES go, that's the whole point. It was experimental and it ended up a fantastic game. Just because you didn't like it it doesnt mean it was crap. |
|
|
|
|
|
|
#15 |
![]() ![]() Developer
|
By that definition, you don't like Mario Kart or Mario Tennis games as well then?
Mario RPG has had 'sequels' to it for the GBA in the form of Mario & Luigi: Superstar Saga series.
__________________
[Blog] [Portfolio] [Homebrew Illuminati - Serious Homebrew Development Forums] [I want to make Homebrew FAQ] [How I broke into the Games Industry] [Programming Book List] [Programming Article List] |
|
|
|
|
|
#16 |
![]() Enter Custom Title
|
Well..... Mario Karts amazing cause its fun.
Mario Golf and Tennis r boring but thats because i don't really like them. If they brought an Nintendo Wii version of Mario RPG. It would most probably be good. |
|
|
|
|
|
#17 |
![]() Enter Custom Title
|
|
|
|
|
|
|
#18 | |
|
Banned for LIFE
|
Quote:
You have to realise that other peoples opinions differ from time to time :/ |
|
|
|
|
|
|
#19 | |
![]() |
Quote:
*sigh*
__________________
kewl storeh brah |
|
|
|
|
|
|
#20 | |
![]() Enter Custom Title
|
Quote:
![]() Seven_: I haven't got Super Paper Mario So i can't really say anything about it |
|
|
|
|
|
|
#21 |
![]() |
edit: well I tried to split the huge post up as its too big to edit, but it concats multiple posts so... I cant split it up :/
so here is a new piece i hammered out; Tick-Tock Tick-Tock Goes the Clock ========================= ========= Some games have a mechanic for driving players forward, and some dont. You can use a ticking clock to keep things on the go, you can also use it to deter farming and gold mining etc. Food is a classic ticking clock, but it is really only useful at the start of the game. Players end up farming for gold just to buy food to survive, as in the case for Ultima III, food as implemented, was a very poor clock. It cost a lot, got used up quickly and was a major source of frustration. Other methods to stop farming and drive the player forward are things like no or limited re-spawning of monsters. If you want to stop your player from sitting in the forest killing all the wild apes, stop them from re-spawning after you have spawned 10 of them. With nothing to kill, the player will be required to move on to do other things or to new areas. You can limit access to areas. Think of them as islands, maybe surrounded by mountains or sea or anything that contains the player in a set area. If the player wants to see more of the game, they have no option but to move forward through the plot. You could limit what shops sell, the player may get fed up that all shops in his area only sell daggers instead of uber weapons etc. and move on. Of course, you can always have a physical clock, making each move on the map take 30 minutes and after "2 months" of game time have elapsed cause the volcano to erupt.. If the player wants to live they better get the hell out of the area! Now, erupting the volcano is pretty cool, but it requires giving the player a reasonable amount of time to explore and work the area, if they are killed off because they are too slow without warning, they wont want to continue playing. Magic Candle had a good 'ticking clock' in the form of its central story, the candle burning down. Easy mode in the game gave you 999 days to complete your quest. Sure you could do side quests and spend all your time in town crafting items and gems for sale, but at some point it makes you realise 'Uhoh! I have only 400 days to go, I better get a move on!' Another form of artificial clock is forcing the player to continually spend his money. One mechanism I like is 'Wear and Tear' on arms/armour, this comes straight from Magic Candle I, where it had a nice implementation. Every time you hit your opponent or take a hit, your wear and tear on that item decreases. When it gets to zero your item breaks. You can replenish your wear and tear by having a smith etc repair your weapon for a price. A twist on that, that I am implementing in Fishguts is, each time you repair an item, its maximum wear and tear reduces, so an item will never be as good as its last repair, it will slowly be reduced in effectiveness, forcing you to get new weapons every now and then and forgoeing a favourite item lasting the entire game. Things to ask yourself about moving the player forward - WHY is the player lingering? - Am I pushing the player too fast? - Am I not supplying enough information for the player on what to do next/where to go? - Is my ticking clock good for the whole game or just the begining and becomes worthless? - Will my ticking clock do more to annoy than to help the player? - Does my player WANT to move forward?
__________________
-- Code Monkey : Sarien, Fishguts, Cracks and Crevices -- "Did IQ's just drop sharply while I was away?" (Ripley) |
|
|
|
|
|
#23 |
![]() |
PSProg, if it helps in your design, thats cool
I love RPGS and want to see more of them on the PSP!
__________________
-- Code Monkey : Sarien, Fishguts, Cracks and Crevices -- "Did IQ's just drop sharply while I was away?" (Ripley) |
|
|
|
|
|
#24 |
![]() |
Farming isnt too much of an issue if you remove any monetary return from killing a rat 500 times. Also thinking of smart ways for character development away from the get x amount to XP to level up. Simple method of this is progression solely through getting better equipment, like zelda games do.
|
|
|
|
|
|
#26 |
![]() |
Some of this is going to really help me, I really do appreciate this, hopefully this will help my game be a better RPG, I like some of the concept you had for this, Really good stuff man, once you complete it, it should be made in a new post, locked and stickied so everyone can see it
.
|
|
|
|
|
|
#27 |
![]() ![]() ...in a dream...
|
dan - you should just stop talking... yaustar made you contradict your previous statement when you said mario should stick to platformers (not an RPG or FPS or anything). You said you liked mario kart (clearly not a platformer). Also what about SSB? Mario fighting ftw, I take it you don't like that either though Towards this guide, it's hardly a 'How to create an RPG' guide rather an 'Elements of an RPG' but that's just me...
__________________
...you'll never know what it's like... spending your whole life in a dream...
Launch a Kitten out of a Cannon and win real cash! Checkout my newly updated site for all my projects (Kitten Cannon, BOXHEAD, Light Cycle 3D) |
|
|
|
|
|
#28 | |
![]() Enter Custom Title
|
Quote:
I like most mario games infact. |
|
|
|
|
|
|
#29 | |
![]() |
Quote:
You'll notice the tilemapping needs work, the datastructure segment is basically empty, I have not put up anything yet on logic/flow control, saving/serialisation, ai, indepth combat mechanics, indepth npc interaction, etc but a lot of that is too language dependant and I was trying to keep away from that.buy ofcourse sg57, feel free to you know, contribute to it... creating any rpg needs to start from a good design, I'm hoping this will help some folks.
__________________
-- Code Monkey : Sarien, Fishguts, Cracks and Crevices -- "Did IQ's just drop sharply while I was away?" (Ripley) |
|
|
|
|
|
|
#30 | |
![]() |
Quote:
Back on topic. _df_, this post is pretty in-depth for a draft. I'll keep it posted in case of more details on A.I., it seems pretty interesting.
__________________
kewl storeh brah |
|
|
|
|
![]() |
| Tags |
| create , rpg |
| Thread Tools | |
|
|