Yes, that’s right, two posts in one night! In this post, I’ll be rambling about content creation tools.
MV3D currently has some rudimentary in game editing tools. They allow you to select objects, move them, rotate them (sorta), create, delete, etc. Very basic stuff, and really not all too useful if you are looking to build anything remotely complex. I need to come up with a much more useful way to place things in the game world.
Adding some more features to the current editing tools would definitely be a good start to this. In fact, making the current tools less buggy would even be good. Currently, when you move or rotate an item, you are constantly fighting with the server. So you’ll move the item in real time (only on the client) and then while you are doing so, the server will be like “oh yeah, don’t forget, that item was *here*” and it’ll put it back to where it started. The other problem is selecting things with the mouse is and always has been very broken. I’ve handled the specific problem of translating a 2d mouse click on the screen to a 3d object plenty of times before, but I think in this case, I’m using the physics engine to figure it out rather than the graphics engine. And you know what, I think there was a reason for that, but I’m going to call it not a very good one at this point.
Features to add include at the bare minimum, aligning objects. For instance, you want a house object to be planted on the ground. There should be a function that figures out the bottom of the house and the top of the ground and matches them up. Part of the problem there, I think, was that I don’t (yet) know of any way to get to the internals of a 3d model in Ogre. It was pretty easy in Crystal Space, but Ogre hides it from you. So I can’t just be like “Ok, what’s the lowest point on this model, and what’s the highest point on that model.” (Yeah, I know, whine whine) Also can’t forget that multiple selection would be handy.
Beyond that, though, There need to be some other higher powered features like clone (clone a line of things, clone a grid of things, clone a circle of things), randomly place stuff (randomly place, but aligned to ground), terrain editing, and so on.
Please feel free to chime in with any ideas. MV3D’s game world is completely dynamic. Anything above the level of 3D model needs to be edited in game (or in a separate editor).
One more idea that just hit me. It could be possible (maybe even not very hard) to make an external program that you could edit stuff in and then it could connect to a MV3D server and place it in game. That way, you don’t have to talk to the server at all while you are building things. Hmm. Could work, could suck.