Sunday, December 20, 2009

Mud Designer Script Considerations

I spent all night last night messing around with the Unity3D game engine and I have to say I really like how they handle scripted objects in their engine. You place an object in the world, and then attach existing scripts to it. This is a nice concept, as it lets you re-use a script file over and over for several other objects.

Currently the Mud Designer allows each object to have a single script, and the script is owned by that object and not shared by any other objects in the game. After messing with the Unity engine’s scripting setup, I'm currently thinking about changing how the engine handles scripts. I’m considering a script repository that the Designer holds, and developers can drag and drop the scripts onto objects within the game. I’m not quiet sure how I want to go about implementing this concept, as it works great with a single IDE interface, that allows drag and dropping from object to object, but the Designer is broken up into several editors and thus making it a little more difficult to achieve.

Thursday, December 17, 2009

Concord3D

I finally ran into a fellow developer on the Creators Club site that had interest in starting a 3D Engine project with me. While I have been fairly busy lately and unable to spend much time working on the Mud Designer or any other projects, I’ve managed to get things straightened up and release some free time to work on a couple projects. Hopefully development on both projects can progress smoothly.

Monday, December 7, 2009

Serious Design Flaws

As I began working on linking rooms together with the Zone Builder I ran into several issues with the design of the toolkit. Serious design issues, and it is forcing me to re-work a pretty large chunk of the editors and engine to fix the issue. One of them being that the filenames are not modifiable by the users, I have forced them to be read-only, with the engine assigning a filename to each object. This creates an issue with room names, as what if I want a Room called Bedroom but 4 different variations of it, I can keep the Room title as ‘Bedroom’ but have the 4 variations saved as different filenames.

The next issue I ran into is what if I want to have two Zones with the same name, but within different Realms? This isn’t possible as Zones are contained within their own Data directory.

Another problem is that Realms contain a collection of Zones. The collection contains the entire Zone class. Wait a second though… Zones contain a collection too. A collection of Rooms, holding the entire Room class. What’s this mean? It means that even though the Zones and Rooms are being saved out into separate files, the Realm files where also saving every Zone and Room it contained. Duplicate saving was happening, and having a Realm save every zone, with every room, is going to take a lot of time up during the loading and Saving process.

Lastly, the linking of Rooms was going to seem cumbersome with the installing and uninstalling of doors into Rooms. It was a neat concept at the time, but I have since decided to do things differently.

So what am I planning? I will allow for custom filenames, move the Zones data directory into the Realms directory that owns them, provide Realms with a link to their Zones, but not an actual copy of the Zone, along with removing the copy of the Rooms within the Zones collection, and providing Zones just a link to the Rooms. Lastly I am deleting the Room Designer from the project, and giving the responsibility of creating rooms to the newly renamed Zone Designer. This is a couple days worth of work to get ready and finished, along with adjusting my namespaces within the classes. Hopefully by the end of the week I will have the Zone Designer working fully, with the creation and linking of Rooms completed.

Sunday, December 6, 2009

A little perspective

This image shows how everything is linked together and what has been developed so far. Everything shown here is added in the solution, either fully working or not working.

Mud Designer ToolKit

Re-work

Now that I have the Room Designer, Zone Builder and Realm Explorer all linked together and working with one-another, I have started working on adding Room Linking within the Zone Builder. I’ve spent a lot of time thinking of various ways to implement this feature, and I still haven’t decided on a solid method of doing it yet. I really like the drag and drop method of it, but I’m not sure how to build on to that idea. It’s not a new concept for me, as my previous Mud Designer IDE that I replaced with Mud Designer used a drag and drop approach, and it’s really simple to implement, however it would require me opening up the Zone to accessing the Realms. It would need to in order to allow Rooms to be linked to Rooms/Zones within other Realms and I don’t want that. I’m trying to keep each editor segregated from their parents. Realms can access Zones but not Rooms as that is a child of the Zone. Zones can access Rooms but not Realms, as Realms manage and control the Zones.

So how should I approach the Room linking? I’m still not sure, I’ve started with trashing 80% of the Zone UI, as it wasn’t going to cut it. Not that there was a whole lot to the UI in the first place, but it had to go. I’m thinking of adding a ‘Realm Exit’ property to doors, or something along those lines, at which point the Realm can select the Zone and view all of it’s Realm Exits. Users can select a Realm Exit and link it to a Realm Entrance within another realm. I think this is the best approach to take, but implementing it is going to take some serious thought. It sounds fairly simple, but I need to make sure that the implementation of it is well planned. I don’t want to do a whole lot of re-work on this, and I want to make sure that the classes are built correctly. It’s very time consuming to do re-work within the editors when I remove or change an engine class. I spent close to 2 hours re-working the editors after I decided to remove the Engine class earlier this week. I’m trying to avoid that this time around with some better planning.

I was hoping to release a tech preview of the toolkit in a binary form this weekend, but that’s not going to happen sadly. Hopefully next weekend something will be ready, but until then people will just need to download the source and compile it in order to take a look at it.

Thursday, December 3, 2009

Congratulations Garage Games. I am pleased.

Last week I wrote about the state of Indie Game Development and my disappointment in Garage Games due to them charging $1,000 for their new engine while Unreal and Unity released theirs for free.

While I still stand by my statement that Garage Games should be setting the Indie pricing and content standard instead of following corporate pricing modals (such as being out done by UDK), they have done a good job in changing the Torque 3D licensing fees. You can now purchase a binary version of the engine with all of the same features the $1000 Pro version contains (without the source code) for $250. If people purchase it during the month of December they can get it for a cool $100.

Nice job Garage Games, this is going to help indie developers get their hands on a high quality engine with a low budget. Hats off to you.

Tuesday, December 1, 2009

Merged Projects

I spent tonight merging projects together with the Mud Designer. Previously all of the editors where contained within a different project, segregating each editor from another, but this created issues when trying to debug the project and test features, as the Zone Builder would place its files within its debug folder, then the Realm Explorer couldn’t see them due to being in a different project directory.

This has been fixed by moving all editors and the engine itself, into a single project. I was actually surprised to see the project file size be reduced from 3.9mb to 575k, not that it really matters now-a-days, but that was something i hadn’t expected.

Some of the items within the project is broken due to the change, as this was a pretty heavy overhaul. All of the namespaces have been restructured and editors that where previously calling files to load (like the Realm Explorer executing the Zone Builder.exe) are now working in a hacky manor until i get something better setup, which shouldn’t be to long. Hopefully by the end of the week I will have the Realm, Zone an Room editors all synced up and ready for a preview Release on Codeplex.