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.