Post news RSS Lots of stuff going on behind the scenes

The last couple of weeks have been pretty crazy. Lots of different people have wanted to talk to me, and I'm spending a lot of time trying to decide where to take Minecraft and Mojang (the company making Minecraft).

Posted by on

The last couple of weeks have been pretty crazy. Lots of different people have wanted to talk to me, and I'm spending a lot of time trying to decide where to take Minecraft and Mojang (the company making Minecraft).

I'm going away on a personal trip to Finland next week, and the day after I get back, I'm flying to northwestern USA to speak to some of my idols.

I like being totally transparent, but since this involves third party people, I don't know how much I can say; but I can tell you what I want.

I would love to hire some people and set up a small development studio in Stockholm. This would include additional programmers, and someone in charge of the website and community features. And an artist that can make a nicer glass texture. I am not interested in changing the openness of how Minecraft is developed, nor do I have any intention of selling the product to anyone else; I want to be the one developing it.

My development speed has gone down lately because of all this crazy cool but scary stuff happening, but I promise you it will go up again soon, regardless of what happens.

As to my trip to the US; I will be in Bellevue, Washington from August 30 to September 2. I don't know exactly what my schedule is yet, but I'd be more than willing to meet players from that area as long as you promise not to be creepy. ;) We can try to work out the details over twitter.

I'm also working on server-side inventory

There are a few stability issues with the client that worry me, and I will try to sort that out before I go on the trip to Finland next week, but more important is getting SMP more playable before then.

I'm currently working on server-side inventory, and it's going relatively well. I'm currently pulling on hard coded strands of spaghetti code, seeing what moves, then refactoring that out into a better designed code. See, when I first wrote the inventory, it was just a test to see if it was fun, and I've stuck to that code ever since since I never really had to change it.
I probably would've saved myself some time if I had fixed the code immediately when it was still fresh in my mind.

The worst part about refactoring code is that you spend hours working on something only to have it do the exact same thing when you're done with it. The best part is that you feel much better about working with that code in the future. It's very cleansing, in a boring kind of way.

One interesting problem that came up was that of client-side prediction. Since the client is able to accurately predict inventory management 100% (with the exception of crafting, which I'm making controlled by the server, for modding reasons), there's no reason to sync any state other than to tell the server what happens.

Or so I thought!

For example, another player can throw an item at you while you're playing around in your inventory. If you split a stack client side, your inventory might end up being full, but the server thought you had room because of lag, and that item ends up getting lost. So instead of having the server assign new items a specific slot, it just goes “here, take this if you can”, and the client says either “ok, I put it in slot #7” or “no” as a reply.

But then what about chests?

I can either make chest only operatable by one player at a time, or I can make them fully synced by the server, meaning they would get noticeably laggy. I don't want to lock chests to one user, as that's prone to griefing, nor do I want to do the fully synchronous inventory management in them as it really ruins the smooth feeling. I could do some clever rollback scheme where the client will predict moves until the server says that a certain move was illegal (like if two players try to take the same item at the same time, only the first player should get it), but that might get annoying. You see yourself picking up an item, and you place it in your inventory, but then it vanishes.

Oh, also, both the game and the servers have been updated. Since servers don't auto-update yet, you need to download the latest version from the download page.

  • Fixed save-off
  • Ops can now build in the spawn area
  • Added /tell command for players to whisper something to another player
  • The server logs what admin does what, and broadcasts any admin events to all connected ops
  • /list will show a list of connected players to the op who issued it

Unfortunately, the secret this time is NOT the inventory, but I did include the first version of something pretty big for SMP. and a pretty big update for single-player too. You'll know them when you see it.

I also fixed a pile of bugs for SMP like doors acting weird and torches attaching to the wrong walls.

You do not need to explore new terrain this time around.

(development blog links #1 #2 #3 #4)

Kizzycocoa Author
Kizzycocoa - - 1,827 comments

I am SOOOOOOOOOOOO hyped for this week off, and I should be disappointed! no friday update, but notch visits VALVe!

and, if he sees gabe's knife collection, then he's "in". then, he can fish for HL2:E3/Portal 2 info. XD

Reply Good karma+1 vote
Matt_Bak3r - - 347 comments


Reply Good karma Bad karma+1 vote
Killed_By - - 178 comments

Welcome to Finland pal.

Reply Good karma Bad karma+1 vote
SairenSA - - 267 comments

I have a suggestion concerning the Minecraft engine, but don't know who to talk to.

Reply Good karma Bad karma+1 vote
Kizzycocoa Author
Kizzycocoa - - 1,827 comments

minecraft uses java. but, to get a hold of him? your best bet is to contact him via twitter

Reply Good karma+1 vote
SairenSA - - 267 comments

I'm sorry, I don't have a Twitter account yet.. I just want to suggest some ideas that I have.

Reply Good karma Bad karma+1 vote
Kizzycocoa Author
Kizzycocoa - - 1,827 comments

oh, he set up some google moderator thing. that takes suggestions for MC.

Reply Good karma+1 vote
SairenSA - - 267 comments

How can I suggest my ideas to him?

Reply Good karma Bad karma+1 vote
xilefian - - 451 comments

Why don't you just use a hand-shaking method for the item/inventory/client/server problem?
Client1: "Throws Item"
Server: "Item has been thrown"
Client2: "Received an item"
Server: "Item has been received"
Client2: "Inventory full, drop item"
Server: "Item has been dropped"

If client2 disconnects, the server misses out the "Received an item" hand-shake so it drops the item where client2 used to be as opposed to attempts giving it and loses it.

Reply Good karma Bad karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.