Dynamic cities in RPGs
Hi everyone,
What have RPG cities or towns been missing for ages?
The answer: LIFE!
RPG designers have a longstanding tradition of creating towns only to serve the purposes of 1. buy/sell items or 2. Get information on quests and the world.
Those are very important aspects of towns but what has been forgotten through these efforts is that the town should exist without the player. The town does not solely exist to benefit the player but should be a living, thriving entity all in its own.
I want to see towns that are more dynamic in their nature and populations.
What I have not seen much of in games and that I would like to see more of is NPC to NPC interaction. When I enter a bar, I want the place to be lively with conversation. Conversation bubbles going almost everyone''s heads. That way, I may not even need to talk to individuals, I may get all the information I need just sitting at my table having my drink.
Im not too keen of being the only explorer or adventurer or person for that matter that ever enters or leaves the town. I want new people at that bar every time I enter, I want people entering and leaving the town every day. Other adventurers perhaps with fresh news from the north.
I want marketplaces with people chatting about the daily events while buying from one another.
I want weekly gatherings at the church or town center for meetings.
The list runs on...Get my point? I believe that making cities more dynamic would do wonders for the player''s immersion into the game and breath new life into RPG cities.
Ok now that I let all that out...I can get back to reading =)
One question:
How?
These things don''t get done because they are not trivial.
How?
These things don''t get done because they are not trivial.
In our game, there is a main city, this city is really big, however, things are clearly visible, but not everything is accesible, its not that hard to do...Final Fantasy did it, but if you where to make everything interactable...thats a lot of work! thats like 2 months into one city!
Scripted things is really difficult in a game where there is no time limit. In Zelda 64 Majora''s mask, i saw the best scripting in characters i have ever seen in my life...all interacting, you see how they live their lives for those 3 days...purely amazing.. If you where to do a differenty scripts for characters for all 7 days of the week, that would be nearly impossible...too much work...i wouldnt'' do it anyways...just slap a character that has no purpose walking down a streer, the player goes up to him and tries to talk..."what do you want!"...
thats what they did in Ultima 9, which was also cleaverly scripted with before this happened events...
Scripted things is really difficult in a game where there is no time limit. In Zelda 64 Majora''s mask, i saw the best scripting in characters i have ever seen in my life...all interacting, you see how they live their lives for those 3 days...purely amazing.. If you where to do a differenty scripts for characters for all 7 days of the week, that would be nearly impossible...too much work...i wouldnt'' do it anyways...just slap a character that has no purpose walking down a streer, the player goes up to him and tries to talk..."what do you want!"...
thats what they did in Ultima 9, which was also cleaverly scripted with before this happened events...
hapaboy,
As I figure, there are two ways to get what you want.
One is to script actions for all NPCs in a game. This is really hard, but probably not impossible. It could probably be made somewhat more workable by basing the design of your game around the fact that much of its time will be spent processing the actions of NPCs you can''t see (and thus making compromises about graphics etcetera). Another cheat would be to track behavior of people you can''t directly interact with in a more abstract fashion. An example: say some people''s schedules call for them to be in a bar conversing. As long as you''re not in that bar, they are simply marked with the "talking in the tavern" flag. Only when you walk in are their actual positions in the bar resolved, their specific models loaded, and the "generate chitchat" engine loaded. You can then sit in the bar and listen to their conversation... meanwhile, the people outside are made abstract in that their positions are updated only once every five seconds or so as they walk around. In other words, the game worries less about things you can''t see. Furthermore, once you leave a town it''s not unreasonable that it won''t change much barring major events, so it can be simulated on an even more abstract level; with the schedules for characters only being loaded up when you reenter. Then the game only has to track the travels of wanderers like yourself when you''re out of town.
The other option is an MMORPG. The advantages here are obvious: no need to worry about scripting actions for player controlled characters! The disadvantage of course is that it''s no longer a single player game and you''ve opened a whole new can of worms in terms of plotting and play balance...
---------------------------------------------------
-SpittingTrashcan
You can''t have "civilization" without "civil".
As I figure, there are two ways to get what you want.
One is to script actions for all NPCs in a game. This is really hard, but probably not impossible. It could probably be made somewhat more workable by basing the design of your game around the fact that much of its time will be spent processing the actions of NPCs you can''t see (and thus making compromises about graphics etcetera). Another cheat would be to track behavior of people you can''t directly interact with in a more abstract fashion. An example: say some people''s schedules call for them to be in a bar conversing. As long as you''re not in that bar, they are simply marked with the "talking in the tavern" flag. Only when you walk in are their actual positions in the bar resolved, their specific models loaded, and the "generate chitchat" engine loaded. You can then sit in the bar and listen to their conversation... meanwhile, the people outside are made abstract in that their positions are updated only once every five seconds or so as they walk around. In other words, the game worries less about things you can''t see. Furthermore, once you leave a town it''s not unreasonable that it won''t change much barring major events, so it can be simulated on an even more abstract level; with the schedules for characters only being loaded up when you reenter. Then the game only has to track the travels of wanderers like yourself when you''re out of town.
The other option is an MMORPG. The advantages here are obvious: no need to worry about scripting actions for player controlled characters! The disadvantage of course is that it''s no longer a single player game and you''ve opened a whole new can of worms in terms of plotting and play balance...
---------------------------------------------------
-SpittingTrashcan
You can''t have "civilization" without "civil".
----------------------------------------------------SpittingTrashcanYou can't have "civilization" without "civil".
I''ll just elaborate a little on my previous post...
It''s perfectly possible to have NPCs acting as if they have lives. Ultima VII had NPCs that followed a schedule: you could see certain people in the tavern at certain times of day, and when it got too late they''d get up and walk home. They''d also make short context-dependent utterances such as "more beer!" or "this furnace''s hot". So that much is all feasible, and was done 8 years ago.
But getting them to hold real and in-depth conversations is pretty much impossible without scripting each sentence: and when you do that, they''re either gonna have to keep repeating themselves, or the player is going to end up missing important info. And scripting background info that a player will probably never see is a very inefficient use of a programmer or designer''s time.
Also, people entering or leaving the town is possible, to an extent. You will need to track their progress across the map, just in case the player decides to follow them. Which means you need a pretty decent pathfinding algorithm (although I would break it down into a lot of shorter paths, to make it easier). This too can be done by the scheduler, even making them camp for the night if you liked. The only caveat here is that the schedule would have to be reasonably cyclic and repeat itself after so often (as is generally the nature of such scheduling systems).
[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost ]
It''s perfectly possible to have NPCs acting as if they have lives. Ultima VII had NPCs that followed a schedule: you could see certain people in the tavern at certain times of day, and when it got too late they''d get up and walk home. They''d also make short context-dependent utterances such as "more beer!" or "this furnace''s hot". So that much is all feasible, and was done 8 years ago.
But getting them to hold real and in-depth conversations is pretty much impossible without scripting each sentence: and when you do that, they''re either gonna have to keep repeating themselves, or the player is going to end up missing important info. And scripting background info that a player will probably never see is a very inefficient use of a programmer or designer''s time.
Also, people entering or leaving the town is possible, to an extent. You will need to track their progress across the map, just in case the player decides to follow them. Which means you need a pretty decent pathfinding algorithm (although I would break it down into a lot of shorter paths, to make it easier). This too can be done by the scheduler, even making them camp for the night if you liked. The only caveat here is that the schedule would have to be reasonably cyclic and repeat itself after so often (as is generally the nature of such scheduling systems).
[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost ]
I thought of a similar idea a few years ago where NPC''s were all configured with "personalities". These personalities were nothing more than a hinting system with a few properties for each NPC.
They would have a "task list" which would outline their daily activities based on time of day. If it were 7:00 am, a farmer would be hinted to go to his farm and work. He would then follow a path from where he was currently located. If this farmer encountered a player (or other NPC) which he had a hinted reaction to, the farmer might run away from that character (which would delay the trip to the farm).
While I think this is very do-able, we would see issues such as the farmer getting killed by bandits. If the farmer had something important to say to the player, there had to be another way for the player to find out the information he needed (e.g. the farmer''s diary on his dead body... or from his wife).
If this type of logic was placed in a living world, you would need to limit the number of characters in your world or the game would run like a dog.
While this doesn''t do anything with the conversation idea you had, it does make for a more dynamic world.
borngamer
They would have a "task list" which would outline their daily activities based on time of day. If it were 7:00 am, a farmer would be hinted to go to his farm and work. He would then follow a path from where he was currently located. If this farmer encountered a player (or other NPC) which he had a hinted reaction to, the farmer might run away from that character (which would delay the trip to the farm).
While I think this is very do-able, we would see issues such as the farmer getting killed by bandits. If the farmer had something important to say to the player, there had to be another way for the player to find out the information he needed (e.g. the farmer''s diary on his dead body... or from his wife).
If this type of logic was placed in a living world, you would need to limit the number of characters in your world or the game would run like a dog.
While this doesn''t do anything with the conversation idea you had, it does make for a more dynamic world.
borngamer
To save processor time (and to allow more NPCs), you can forget about most of the characters in the world, because they don''t matter if you can''t see them. So long as their state makes sense when you next encounter them, that''s what matters. Any NPCs a certain distance away can be treated like this.
[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost ]
[ MSVC Fixes | STL | SDL | Game AI | Sockets | C++ Faq Lite | Boost ]
Technically, the city does exist to benefit the player. The entire game exists only for the player''s benefit. So if you want the city to be alive, it must be so in a way that is entertaining, and also noticeable. If you model this whole system and the only part of it the player can observe is that certain NPCs sometimes come and go, then you can just have them move about randomly. Or, if when the player enters town you want him to see people at home eating, then when he enters town or just an area of town, you can right then decide what each NPC near the area would be doing at that time, as opposed to worrying about this when the player isn''t anywhere nearby, or in a totally different area of town.
~CGameProgrammer( );
~CGameProgrammer( );
~CGameProgrammer( );
Developer Image Exchange -- New Features: Upload screenshots of your games (size is unlimited) and upload the game itself (up to 10MB). Free. No registration needed.
one thing is that you're on the right track with the concept of the player being able to sit and listen to conversations...I think that would be quite interesting
Also, IMO finding a way to have less NPCs in a town would be an interesting design aspect. This way you could get to know an NPC in depth. It would be like hey there's NPC Bob...I remember him from yesterday...he's a fisherman who is very kind and blah blah blah
Also less NPCs (but each being more detailed) means it's easier on the CPU than a bunch of detailed NPCs.
A CRPG in development...
Need help? Well, go FAQ yourself.
Edited by - Nazrix on January 21, 2002 9:22:55 PM
Also, IMO finding a way to have less NPCs in a town would be an interesting design aspect. This way you could get to know an NPC in depth. It would be like hey there's NPC Bob...I remember him from yesterday...he's a fisherman who is very kind and blah blah blah
Also less NPCs (but each being more detailed) means it's easier on the CPU than a bunch of detailed NPCs.
A CRPG in development...
Need help? Well, go FAQ yourself.
Edited by - Nazrix on January 21, 2002 9:22:55 PM
Need help? Well, go FAQ yourself. "Just don't look at the hole." -- Unspoken_Magi
Another thing about producing many conversational options for the player & NPC:
from a very clever post by Felonious
"The way I believe it should be is to let the player see a number of sentence "patterns". These sentences contain variables that is of a given type (not only items), such as other sentences, people and such. The player would then construct these sentences at runtime by filling in (via menues or the views) the variables. If the selected variable was a sentence variable whis could be filled in. Suppose you have a sentence pattern "[sentence] and then [sentence]" this could be filled out with "Go to [location] and then buy [item]" which in turn could be expanded to "Go to baker and then buy bread". Although the number of patterns are limited the number of sentences are much larger, or even infinite (if you allow recursion). In the above example I could build a very long order for an NPC to perform (if he wanted to)."
A CRPG in development...
Need help? Well, go FAQ yourself.
Edited by - Nazrix on January 21, 2002 9:17:52 PM
Edited by - Nazrix on January 21, 2002 9:20:32 PM
from a very clever post by Felonious
"The way I believe it should be is to let the player see a number of sentence "patterns". These sentences contain variables that is of a given type (not only items), such as other sentences, people and such. The player would then construct these sentences at runtime by filling in (via menues or the views) the variables. If the selected variable was a sentence variable whis could be filled in. Suppose you have a sentence pattern "[sentence] and then [sentence]" this could be filled out with "Go to [location] and then buy [item]" which in turn could be expanded to "Go to baker and then buy bread". Although the number of patterns are limited the number of sentences are much larger, or even infinite (if you allow recursion). In the above example I could build a very long order for an NPC to perform (if he wanted to)."
A CRPG in development...
Need help? Well, go FAQ yourself.
Edited by - Nazrix on January 21, 2002 9:17:52 PM
Edited by - Nazrix on January 21, 2002 9:20:32 PM
Need help? Well, go FAQ yourself. "Just don't look at the hole." -- Unspoken_Magi
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement