Archive

Archive for the ‘Game Engines’ Category

Unity 3D Thoughts

April 24, 2011 Leave a comment

I’ve spent the last few months working on a project using the Unity 3D engine and have to say that it’s a pretty solid engine. While on any given day, I’d much rather be using the UDK tool kit, I don’t mind using Unity when I need to.

The unity community is very supportive, and the company seems geared towards helping indie game developers out with making their own video games which is a plus. The engine does not have all of the features that UDK does, like a cut-scene editor and point-and-click scripting, but for developers that are used to C# and XNA, I find the Unity is a perfect tool to help keep development costs down. The transition is not that difficult to make.

One of the things I really like with Unity, is the ability to write code, and then run it immediately. I’m not aware of any way to do that with UDK, which I believe requires you to restart the editor each time you want to compile the scripts and have them take affect.

I’m really wanting to get my current project completed, but I’m suffering from lack of 3D math knowledge, which hinders my development speed. That and building some sort of state manager, which is taking some time.

I am going to spend tonight really focusing on fixing some of the issues I have with my project, and getting a working copy uploaded to the teams SVN tonight.

Advertisements

Catching up

April 23, 2011 2 comments

It’s been a few months since I’ve made a blog post, so I thought I’d take some time to update everyone.

Work has been pretty hectic since November of last year. I’ve completed one project (we constructed a brand new highway) and moved onto a new project in February for some highway improvements. The current project is a two year project, accelerated to just 9 months, so there’s a lot of work to do. When I’m not crunching away on spreadsheets and paperwork at the office, I’m helping my wife out with her new 10 week old teacup chihuahua puppy.

I’ve finally been able to catch a break and get a weekend off, so tonight looks like a good night to work on a project. I’ve been working with FatCow Games on a game using the Unity game engine and have not been free to work on it over the last month or so.

I’ll be posting more n that later on, but for now I’ll just keep this post short. One last thing though, I bought an iPad 2! So I’m addicted to it, and use it for everything lol.

Mud Designer plans

November 14, 2010 3 comments

Now that I’ve got a large chunk of my current Windows Phone 7 application wrote, I’m feeling pretty good with how things work regarding it. I’m slowly understanding Silverlight a little more with each day I work on this app and feel pretty confident with it.

I started thinking what would be a good next app and I think I want to go ahead and start work on the mobile telnet client app for the phone. While I work on that, I’ll resume work on the Mud Designer and try getting a world up and running by february.
I think a mobile MMORPG (even if it’s in the form of a MUD) would be a pretty cool achievement for myself. If I can beat other people to it, be nice to be the person to release the first Windows Phone 7 MMORPG.

The Mud Designer engine is pretty far along IMO. The core engine is finished and I just need to start working on the NPC, Combat and Quest systems. NPC and Combat shouldn’t take to long, and I’m pretty sure I can put together a simple to use Quest system to get the engine into a useable state. As time progresses and income comes in (hopefully) I can improve and build on the systems, adding more content and eventually get the GUI created and working.

Windows Phone 7 MMORPG anyone? It sounds good to me.

Manufacturing Objects

October 16, 2010 Leave a comment

I managed to get a primitive manufacture class wrote. A structure can have Unit classes dropped onto it within the designer, and during run-time the manufacture class will see what units are assigned to this structure and will be able to present a list of them to the UI for the user to select. I was attempting to store the objects in a List<T> but ran into a issue of my version of Unity not supporting Generic Collections I guess. I checked their site out and saw that they had recently released Unity 3D 3.0 with a huge amount of new features, one being the support of .NET 3.5 which is a huge plus.

Once it’s finished downloading and installed, I’ll migrate my project over to it and button up on my manufacture class, and look into generating game objects during runtime, allowing Unit creation to be finished.

On a side note, I wrote a quick little function in my manufacture class that lets me pull properties dynamically via reflection. Using reflection isn’t something new to me, as Mud Designer relies heavily on it, but it’s neat that I can create a BaseUnit type and allow others to extend off it, and get their properties dynamically within the game.

object GetProperty(object obj, string field)
    {
        FieldInfo info = obj.GetType().GetField(field);
        if (info != null)
            return info.GetValue(obj);
        else
            return "Failed to get property";
    }

RTS Development using Unity3D

October 16, 2010 2 comments

I spent some time back in September working on a RTS skeleton, just a barebones minimum RTS style game. I had a scrolling camera, with auto-height adjustment depending on the elevation of terrain the camera was currently over, along with proper collision detection and object selection. I ended up pausing from the project, as it was a collaboration project, with myself and a few other people planning on working on it together. The team needed more time to prepare for it, so I spent my time focused on Mud Designer and my wedding.

Things have calmed down now, and the main point of contact for the team looking to work with me on a 3D RTS game has resumed discussions with me regarding the project, so I thought I’d use this blog as an output to my thoughts and progress made. Not so much content related to the game, but rather how I achieved certain tasks that I was attempting to get working.

The first order of business for this morning was looking at what I had already developed. I had a working camera, and object selecting was implemented, so the next step would be creating units.
I figured the best solution would first create the units, then work on writing a manufacturing class that would perform the actual unit creation during run-time.

The Unit creation went pretty quickly, I created a BaseUnit class that all Units will inherit from. This way, as designers want new Unit Types (Marines, Monsters, etc.) they can create an extended class, edit a couple minor things (such as 3D model and sound) and the actual unit creation would be handled by the base type along with the AI.

I’ll probably end up moving the creation of the unit out of the BaseUnit class and into the Manufacturing class at some point, but for now this gets the job done.

It wasn’t difficult to get the unit created, albeit nothing is actually visually created on-screen. Basically I check for how much time has passed, and when the BaseUnit.ManufacturingTime has passed, the unit is flagged as created, at which point the user will have access to them.

//How long in seconds it takes to manufacture this unit.
    public int ManufactureTime = 15;
    private float manufactureStartTime;
    private float currentTick;
    private bool manufacturingCompleted = false;

    // Use this for initialization
    void Start () {
        manufactureStartTime = Time.time;   
        currentTick = manufactureStartTime;
    }
 
   // Update is called once per frame
    void Update () {
        float manufactureTick = Time.time – manufactureStartTime;

        if (!manufacturingCompleted)
        {
            if ((manufactureTick >= ManufactureTime) && (!manufacturingCompleted))
            {
                manufacturingCompleted = true;
                print("Manufacturing completed.");
            }
            else if ((int)currentTick < (int)manufactureTick)
            {
                print ("Unit Manufacturing in process…");
                currentTick = manufactureTick;
            }
        }
    }

The next order of business is to create the manufacturing class itself. I’ll probably move this code into that class, but for now this works out alright.

Delaying the release another week

September 5, 2010 Leave a comment

Yeah, another delay with the release of Alpha 1.4 will prevent my release of it today like I had originally planned. The delay is caused by a set of new scripts I’m currently working on and they’re pretty large and complex so it’s taking me quiet a bit of time to write them and get them fleshed out. When they’re finished, I think it will be time for me to graduate to Alpha 2.0 as I will have a complete real-time editing package implemented.

So what are these scripts I’m working on? They belong to the aforementioned real-time editing package I mentioned. A series of commands have been re-wrote and new ones added to allow for creation of new world objects, editing of world objects, deleting and moving of world objects along with linking of Rooms.

All of these commands will be released as part of the script package, allowing developers to edit the scripts to suit their needs for what ever requirements that their project might have. Additional information on the way these commands will be used will come soon.

Restoration!

September 3, 2010 Leave a comment

Wow, it’s been nearly two weeks since I committed a change to the Mud Designer source code repository. I liked having my weekly releases at the site, but these past two weeks have been busy for me and there was a lot of work that needed to be done to the engine when I could get the time to work on it, thus causing the missed weekly release.

The Mud Engine now fully restores the game world environment! It’s taken a lot of work and re-writing various methods within classes to get things working the way they should. Saving and loading the game world is fully implemented and now allows for the environments to be restored after the server has shut down. The Server will re-create the game world with everything defaulting to the scripts. Once the world is created, all of the environment objects have their saved state loaded from the saved files and restored. Admin’s can now construct their environments and make changes to existing objects without worrying about loosing their changes if the server goes down.

While object creation other than Environment objects is not implemented yet, this feature needed to be fully implemented prior to working on adding new content to the engine in order for new content to support saving and restoring.

Alright, so what’s next… I will spend my free time working on the Create script. Environments now have a ‘Path’ Property that can be used such as:

FileManager.WriteLine(filename, this.RoomLocation, "RoomLocation");

If the Room is within a Realm called MyRealm and a Zone called MyZone then Room.RoomLocation will return

MyRealm.Realm>MyZone.Zone>MyRoom.Room

You can also call Room.RoomLocationWithoutExtension and it will return:

MyRealm>MyZone>MyRoom

I want to do something along these lines for Environment creation, using a command like ‘Create MyRealm>MyZone2’ will create a new Zone called MyZone2 within the MyRealm Realm. No longer would admins need to go through a long process of entering filenames and using the current menu system. It’s a more simplistic approach and with a possible ‘List Zones MyRealm’ command that could list all of the Zones within the Realm MyRealm, a Admin can easily find what Zone names have already been taken prior to creating one.

That’s what’s next on the addenda, and hopefully I can get it finished up by Sunday and have Alpha 1.4 released this weekend.