Monday, November 26, 2007

Design story - Dak is buying a house

Dak has enough money to buy a small house. It won't be impressive but it will be a place he can call home.

He meet Bob (NPC) that is offering him a small Type 1 house's blueprint for 10 credits. Dak can't believe how cheap this house is so he decides to also buy a small chest he'll use to store things in his house. Dak pays Bob and receive in his inventory both the blueprint and the small chest.

He opens his inventory and right click on the blueprint to select the "use" option. A grid appears as well as 2 buttons, "Accept" and "Abort". He then choose where he'll put his house by clicking on the desired location on the grid. A temporary picture of the house appears on the grid. Dak is satisfied with the location and click "Accept". If the selected spot is legal (no other building, NPC, PC or prop there), the house is created and a key is put in Dak's inventory. This key is linking Dak to his house as the owner and will later allow him to set access rights to his house.

Since it's getting cold outside, Dak gets inside his house. It's true that his house is quite small (it has only 1 room) but it's his.

It's now time to find a nice place for that small chest he bought earlier. He opens his inventory and right click on the chest and select "Drop" from the context menu. The same interface used to place his house then appears with some new options: "Front" and "Back" to bring the chest forward or backward on the screen and 4 arrows that allows him to slightly move the chest around (1 pixel at a time). Dak clicks on the grid to chose where he wants his chest to appear. The chest appears and Dak click on "Accept". The chest is now available in his house.

In his inventory, Dak noticed there was a sword. "I don't need no sword here" he tells himself, "And it's getting heavy to carry". Dak right click on his chest and select "Open". A screen appears showing both Dak's inventory (containing a sword and a key) and the content of the chest (currently empty). He right click on the sword and select "Put". The sword is switched from Dak's inventory to the chest. If Dak wanted to take back the sword, he could right click on it and select the "Take" option.

Dak close the small chest and feels he accomplished a lot today.


Crwth said...

I'm just curious why double-clicking isn't used in this example: double-clicking the blueprint would enact a default context menu choice of "use", and on the placed chest an "open". Even the "trade window" between the inventory and the chest could support double-click for "put" and "take", which are really just abstractions of the "move" verb.

Micha said...

So, er, when do we get to buy some little houses of our own? Even if they get swept away by Typhoon BetaReset, of course. Those "natural" disasters aren't too bad when you're prepared for them.

Over00 said...

ok, first, I need to confess, this story has been written after the code has been written. Should have been the other way around.

I'm just curious why double-clicking isn't used in this example

For now it's just a matter that I wanted something done fast. Since there's more than 1 option for items (in inventory, trade, ...), I just did the context menu. But I agree, playing around with it, a double-click just seems more natural (and it is).

Adding double click really ain't much (at least it shouldn't, I remember having some problem with it at first because of conflicts with other events, don't remember what exactly). It's probably a thing that will be added in the next iteration (I like to have things done fast and revisit them often, seems to help to not be "overfocused").

I read your post and it's quite interesting. I can't say though that the framework is exactly built this way. I do have a layer of abstraction for some commands but sometimes it's just a matter of keeping the source readable (I often find myself frustrated to only have to rely on myself to remember things so abstracting too much can sometimes get confusing).

I do try to limit the number of commands though. Again, that's something I try to "fix" at each iteration.

So, er, when do we get to buy some little houses of our own?

hehe, I had hopes to have the alpha running online for december but considering how much work the interface is, it's probably going to be somewhere around early january.

It'll start at alpha since at that stage, there won't even be "real" game mechanics. What I mean is that it will be playable but with no "game objectives" yet. This will look more like a gameless game like Habbo Hotel at that stage strictly to focus on testing basic actions (movement, props use, house, trade, ...). I predict testing will be quite heavy considering how many things there is to test.

In other words: Alpha=Framework testing, Beta=Game testing

So there might be some alpha invitation sent in january! Can't wait to finally show this!