Living Town: Planning

in Tutorials

LivingTownBannerSaw now I’m back with actually getting building on this. If you missed what I’m working on, take a look at the previous post here.

Familiarized yourself with the idea? Okay, good, let’s get started.

The first thing I want to do is build a small scale prototype. I’m working with a TON of different features, so I’m going to need to start with something very basic, and then add on pieces bit by bit. My first goal is to make a small farm, with a single inhabitant, and have him go about a routine based on time of day.

LivingTownGS1Meet Arglebar. He is a farmer. His main routine is tending his field. He eats in the morning, has a light snack at midday, and eats again at the end of his day, then enjoys sitting in front of his fireplace and going to sleep.

The first part of my plan is a little looney, and actually breaks one of my cardinal rules of RPG Maker, I’m going to treat Events like NPCs. Now, I’m not going to try to have each of them handle their own stuff internally, that would get a bit crammed and that many processes running would probably lag something awful. Instead, I’m going to run his routine all using a common event. But, this one single event will be Arglebar in the world, and there is no other Arglebar event.

There are many advantages of this. Because he is a single event that is always moving from place to place, I don’t have to worry about duplicate events. It also lets me store information about the character in self switches (and self-variables as well, which I will eventually add with scripts).

I know what you are asking “but how is Arglebar going to go inside his house”. And that is a good question! The answer is in thinking outside the box. The entire playable area of the town will be one map, things will just be spaced so you can’t see more than one “map” at a time. I can use other maps for places that the villagers will never go, but this keeps things much simpler for me to run routines.

But I know what you are thinking: Wait, won’t that mess up because they use different tilesets!?

That is an odd little house.

That is an odd little house.

I’m glad you asked that! There are two ways I can fix this.

  1. Cut together the two tilesets using only what I’m using on interior and exteriors. This wouldn’t be too hard, only the TileA stuff would have to be copied, since both the exterior and interior tilesets have only 2 B-E sets, so I could fit both of those.
  2. Just have the game change tilesets when you go through the transfer event.

I’m going to just go with #2 for now, though I may switch to doing #1 later. There are several advantages for doing #1 (passabilities won’t change, which may matter for events acting in their homes, but more on that later), but for a quick throwtogether prototype, I’m going to go with the faster solution, which is #2. The event should look like this:

LivingTownGS3

There is another great advantage of doing it all on one map. I can keep everyone’s routines constantly running, without worrying that it will mess up when the player is away. This is something you couldn’t do on a grand scale, but for a single village, I should be able to get it to work out.

For right now, I’m just using the Mountain Village House Exterior and Interior sample maps kludged together for my maps. Sample maps are GREAT for prototyping. They save a lot of time over making a custom map just to test something out.

With that out of the way. I’ll move over to some other planning steps. For this to work, I’m going to need some kind of timekeeping system. Its going to need to be extensible to further planning, as right now, I’m only working on something small, but I need to be able to add weeks/months/years etc.

After going through a lot of options, I finally settled on a script by Solistra called SES Dynamic Time. The reasons for this decision are pretty obvious when you read the description. It lets me create my own timeline, pace everything the way I want, and have many different combinations of time periods. Its also made by someone I know, and can therefore trust to not be an idiot who has slapped stuff together.

For moving around Arglebar, because this is a much simpler setup than my full implementation, I could probably just use normal move routes. But I know it won’t cut it once we get into more dynamic ideas. With that in mind, I’m going to go ahead and try to use a pathfinding script instead.

What is a pathfinding script? Basically, instead of telling the event every single move up, move left, move down, move right, you can tell it an end location, and it will find its way there on its own. This will be great for later on, when I’m having a person have a dynamic routine, where he could go to one location from many different locations. Implementing this script earlier will mean less fiddling with it on the grand scale.

The Pathfinding script I have chosen is one by Jet and edited by Venima. Once again chosen because I know the creator isn’t an idiot, and it does what I want.

Now to develop a routine. I’m going to use a time scale of about 60 to 1 for initial testing. This will mean that for each minute that passes in real time, one hour will pass in game time. 24 minutes will give us a full day.

Arglebar’s routine in the first prototype for each day will be this:

  • 6am: Wake up and fix and eat a breakfast
  • 7am: Go to the field and work
  • 12pm: Sit on his stool near his campfire and eat a light lunch
  • 12:30pm: Go to the field and work
  • 7pm: Come home, fix and eat a dinner
  • 8pm: Sit in front of fireplace and rest
  • 10pm: Go to bed

He will repeat this day infinitely. What a boring life! Fortunately, this is just the beginning, and he will have much more to look forward to in the future. Now that I have things planned out, next time, I’ll actually get into the guts of my prototyping. Any questions so far? Have any thoughts on how things are proceeding? Or want to tell me how I’m doing it all wrong? State your case in the comments section below, or you can also join in on the discussions on our forums here.

As for materials: I didn’t really add much this week, as I didn’t write down any notes that didn’t make it directly into the article, and I didn’t do enough work in the editor to really show anything. Not enough to upload. You can check out the scripts I’m using and try to familiarize yourself with them, though. Or maybe search and see what other options I had that I turned down.

 

Comments on this entry are closed.

  • Patryk

    I don’t have much to say other than your method is 20 times better than mine. I have schedules for my NPCs done, one fun example of Murdok’s the lieutenant of the militia schedule:

    Day: Train soldiers in the barracks.
    Afternoon: Patrol the streets.
    Evening: Chat with Captain of the militia.
    Night: Stand in front of wife’s grave and quietly weep (not really, he’s a badass), and you can actually make friends with him because he tells story about his wife and stuff.
    Midnight: Patrol the streets.
    Late night: Sleep at the barracks.
    Early morning: Train in the barracks (I did a cool animation when he slices the air like Goku to train haha)
    Morning: Eat breakfast.

    That specific schedule turned out really great, among few others. But the way I did it is simply awful. I created bad day and night cycle using switches, and then I copied the event (Murdok), and I made him appear at appropriate times of day. And it was a total nightmare when I wanted to change few things in this NPC, I had to copy and paste hell out of them. And I couldn’t add weeks for example to change up his schedule.

    Also he has unique dialogue for every phase of the day, which adds to the awesomness of the schedule system, will your method allow, or make it fairly easy to have many different dialogues, and/or unique scenes that play out at appropriate times without much clutter? It was easy to change those things in one event, so I’m wondering how it will look using common events, sorry if it’s a stupid question.

    Also, if I didn’t thank you previously, thank you so much for making these “tutorials”. I basically gave up on making my game, because I didn’t wanted static, lifeless NPCs, and like I said my method was a complete failure. So I was just basically waiting for the next part to see what you’ll come up with, and you just instantly put me back in the game haha.

    • Nick Palmer

      Good to hear its helping. I have a lot of experience with the types of logic puzzles that these kinds of systems turn into, so hopefully I will be able to come up with some out of the ox solutions that work.

      Unfortunately, I’ll probably also run into some situations where something I try is a hilarious disaster. I’m really starting to think my shortcut instead of merging tilesets is a bad idea, but I’m also a bit lazy on fixing that >_>.

  • William Johnson

    @Patryk, you could do that using a separate common event. Just have the NPC call the common event when player engages them. This common event will look at whatever variable you are using for this daily routine, and using a conditional branch + text you can then output appropriate dialog 🙂

    • Patryk

      I should have thought of that, thank you!

  • Lannie Neely III

    I tend to make maps into panorama pictures, that way I can have a lot of diversity in the map without using tilesets for anything other than passability-necessary objects. It means more planning for the world layout (and willingness to spatially recognize your panorama in the map without *seeing* it the whole time), but you get better detail/diversity.

    • Nick Palmer

      My main issue with this kind of approach is the amount of hdd space it starts taking up over time, and it is more time consuming in general to create. Still a very solid approach for people who want to go in that direction.