Archive

Archive for the ‘Unity 3D’ 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

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.