Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Mark

Pages: 1 2 [3] 4 5 ... 19
31
Development & Discussion / On Holiday
« on: April 16, 2017, 07:54:40 PM »
Hey guys,

I am heading off for a week long sea kayak trip around Lough Corrib (with a friend) from the 24th of April to the 30th.

I have a lot to do to prepare for the trip (on top of my regular work hours), including some work on the boats, so it will be quiet here for the next two weeks.

Chat to you when I get back.

Thanks,

Mark



32
Development & Discussion / Our new 3D artist
« on: April 02, 2017, 06:00:02 PM »
Hey all,

Isaac did a fantastic job on the Kite and Takouba class spaceships, but in order to use them in game a 3D artist (modeller/texture artist) needs to turn the reference designs into usable ships for the game.

I've been on the lookout for such a person, and so far I've been blessed to have attracted talented people to work on UoN. This time is no different. Pete McNally, who is certainly one of the best 3D artists I know of, began working on the Kite ship this weekend. He will be turning Isaac's design into a working ship for the game.

It will be a number of weeks before there is anything to show, but in the mean time you can check out some of his personal work here on ArtStation. His blog is also chock full of excellent work.

Thanks for reading! :)

Mark



33
Thanks man. 😊

34
Hi all,

I am still working away on the UI animations, but it has been delayed by my day job which has a big release due early next week.

I expect to finish the new animations late next week, at which point I will post a video here showing them.


Thanks,

Mark

35
Thanks. :D

I was having to copy and paste color values all over the UI XAML files. It was slowing me down, and changing colors was a real pain. I realised I needed a better solution, a central location for all color definitions. The idea for mod color templates and faction based colors came from that.

36
Hey all,

This will be a short post, but it has been almost two weeks since my last post and I want to keep the progress updates going.

I created color templates for the mod system. These templates allow you to change all of the UI colors without editing the UIs at all. As well as that I have attached these templates to the game's faction system, so each faction can have it's own color scheme. So the UIs for a UNION ship will use a different color palette than Centauri ships.

You can see an example of a colors template here: http://pastebin.com/FRALiJq4 (colours are written in hex format, similar to HTML)

Next up I am working on button animations for the UIs, to give a better "feel" to interacting with the screens.


Thanks for reading!

Mark

 

37
Development & Discussion / Re: [Progress - 10th March] Internal Comms
« on: March 11, 2017, 04:27:46 PM »
Yeah I agree. Thanks man.

38
Development & Discussion / Re: [Progress - 10th March] Internal Comms
« on: March 11, 2017, 03:57:27 PM »
Here are the tags with the rounded sides, as suggested by Blaze:

39
Development & Discussion / Re: [Progress - 10th March] Internal Comms
« on: March 11, 2017, 01:48:36 PM »
Ah yes I hadn't looked at the tags in that way, I will experiment with different styles and placement.

Good call on the "RE:", I will replace it with "SUBJECT:" and add the "RE:" to the title for responses.

40
Development & Discussion / Re: [Progress - 10th March] Internal Comms
« on: March 11, 2017, 12:39:00 PM »
Thanks man. 😊

Before I get onto responding to your questions, I would just like to say how much I appreciate that you guys are such critical thinkers. Never stop questioning me on ideas/decisions, and certainly never stop suggesting alternatives. You are making UoN a better game than it otherwise would be.

Good call on the Engineering and High Priority tags. Do you think making them darker might help?

In regards to Internal Comms message replys, I had two reasons for keeping them very short. One is to not slow down the pace of gameplay, the player already has plenty to be doing without being forced to read lines of text (you can ignore the subordinate's message and go straight to the responses, if you want). The second is that I didn't want to be putting words into the players mouth, where the reply might be nothing like what I would say. This is certainly the time for feedback on those decisions though.

Messages get archived once you have dealt with them. You will be able to view archived messages, where it will show which option was chosen. You will not be able to interact with archived messages.

In the case of the example, if you chose Quick Fix that repair would be completed and 18% Instability would added to the system. You could then order the Technician to do a complete fix by clicking on the Repair button, but the 18% Instability would remain until you had a Technician Stabilize it. In the fiction of the world Stabilizing is the recalibration of the systems parts. So a system does not need to have structural damage (Integrity loss) to be unstable.

I do intend to have a context sensitive request system which will raise Internal Comms messages. For example in Tactical I could click on a Turret and choose the "Increase Power" request, which would generate a message for Engineering to increase power to that Turret. The Engineer would not have the option to increase power automatically, but instead would have quick responses, something like "Yes", "No", "As soon as I can" and "Not possible, sorry".


41
Development & Discussion / Re: [Progress - 10th March] Internal Comms
« on: March 11, 2017, 12:41:51 AM »
Thanks man. I really love this system, it gives you variety and interesting choices.

There will be many different kinds of events with different kinds of choices too. Like an imminent explosion in a system, will you leave the Technician there and risk his life in order to reduce the impact, or have him evacuate so that he is safe?

Plus, the system is completely mod based, so people can add new events, choices and dialog. I can't wait to see what gets added. 😊

42
Development & Discussion / [Progress - 10th March] Internal Comms
« on: March 10, 2017, 12:27:40 PM »
Hey all,


I've been busy working on the Technicians gameplay, and a big part of that is the "Internal Comms".

Events can occur while a Technician is assigned to a system, these can be Instability events caused by overheating or damage, or they can be setbacks or breakthroughs in the action the Technician is currently engaged in (such as repairing the system).

When an event happens the Technician will send you a message through the Internal Comms, which appears in your list of notifications. When you click this notification it opens the message so that you can learn about the event and choose how to deal with it.

I am currently working on the UI for Internal Comms messages. This is the first draft, and I wanted to get some early feedback from you. The selected message is an example of a setback which has occurred during the repair of a system. You are given the choice to complete the repair quickly, but suffer extra Instability, or take the time to do a full repair.


And the chat area has been replaced with an Internal Comms area, it shows the number of pending messages, and the two latest (High Priority first) messages.


Internal Comms will be used for the other role subordinates (Tactical Operatives and Science Researchers) as well.


Thanks for reading!

Mark


43
Development & Discussion / Re: [Progress - 5th March] Modding API
« on: March 05, 2017, 02:41:19 PM »
Absolutely! 😊 I will definitely incorporate modding as a element of the marketing.

44
Development & Discussion / Re: [Progress - 5th March] Modding API
« on: March 05, 2017, 02:22:18 AM »
Adding modding to a game gets exponentially harder as development progresses. This is why I knew I had to tackle it sooner rather than later. Modding has always been an important part of my vision for UoN.

The UIs are fully moddable, and extra functionality can be added. The modding API allows for custom logic and data to be added to spaceships (and other entities), and this logic and data can be accessed from UIs.

45
Development & Discussion / [Progress - 5th March] Modding API
« on: March 05, 2017, 01:06:14 AM »
Hey all,


This is a technical post, but it's a milestone for UoN and I wanted to share. :)

One of the most difficult to implement features of a complex game is a modding API, the ability to inject custom code into the game. The reason it is difficult is because the game has to be structured to suit code injection, the ability to use code that was not written as part of the game. Luckily I planned for a modding API from the start, but I still had a lot of work to do to actually implement it.

I added the ability to use custom assets (textures, models, UIs), and config files (for entities in the game, spaceships, equipment) into the game last year, but put off the modding API until recently. Thankfully that work is now complete, UoN now has a full modding API where all of the systems in the game are accessible to, and can use, custom code.

Here is an example of code from the base mod (UNION uses a base mod for all of the game's content). This is the main spaceship process, which manages Heat and Instability. This file is saved as a .CS file in the mod folder.
Code: [Select]
using System;
using UON.Common;
using UON.ModdingAPI;

namespace UON.BaseMod
{
    public class StandardSpaceshipExtension : ISpaceshipExtension
    {
        private float m_nextUpdatePassiveHeatTime;

        private ISpaceshipComponent m_spaceshipComponent;
        private IEquipmentComponent m_equipmentComponent;

        public void OnServerEntityUpdate(float deltaTime, IKotarEntity entity)
        {
            m_spaceshipComponent = entity.GetComponent<SpaceshipComponent>(ComponentIds.Spaceship);
            m_equipmentComponent = entity.GetComponent<EquipmentComponent>(ComponentIds.Equipment);
           
            for (byte systemIndex = 0; systemIndex < m_spaceshipComponent.Template.Systems.Count; systemIndex++)
            {
                float actualPassiveHeatLevel = 0.0f;
                if (m_equipmentComponent[systemIndex].OperatingPowerLevel >= m_equipmentComponent[systemIndex].Template.Class.MinOperatingPower)
                {
                    actualPassiveHeatLevel = m_equipmentComponent[systemIndex].OperatingPowerLevel * m_equipmentComponent[systemIndex].Template.PassiveHeatCoefficient;
                }

                if (actualPassiveHeatLevel == 0.0f)
                {
                    m_equipmentComponent[systemIndex].PassiveOperatingHeat = actualPassiveHeatLevel;
                }
                else if (UONGame.Instance.PlayTime.TotalTime.TotalSeconds > m_nextUpdatePassiveHeatTime)
                {
                    m_equipmentComponent[systemIndex].PassiveOperatingHeat = actualPassiveHeatLevel + (((float)UONGame.Instance.Random.NextDouble() * 20.0f) - 10.0f);
                }

                if (m_equipmentComponent[systemIndex].Heat > m_equipmentComponent[systemIndex].PassiveOperatingHeat)
                {
                    float excessHeat = m_equipmentComponent[systemIndex].Heat - m_equipmentComponent[systemIndex].Template.HeatsinkCapacity;
                    if (excessHeat > 0.0f)
                    {
                        m_equipmentComponent[systemIndex].Instability += (excessHeat * m_equipmentComponent[systemIndex].Template.OverheatToInstabilityRate);
                        m_equipmentComponent[systemIndex].Heat -= excessHeat;
                    }

                    m_equipmentComponent[systemIndex].Heat -= ((m_equipmentComponent[systemIndex].Template.HeatDissipationAmountPerSecond * 0.5f) + (m_equipmentComponent[systemIndex].Template.HeatDissipationAmountPerSecond * 0.5f * (m_equipmentComponent[systemIndex].PercentageIntegrity / 100))) * deltaTime;
                }

                if (m_equipmentComponent[systemIndex].Heat < m_equipmentComponent[systemIndex].PassiveOperatingHeat)
                {
                    m_equipmentComponent[systemIndex].Heat = Math.Min(m_equipmentComponent[systemIndex].Heat + (4.0f * deltaTime), m_equipmentComponent[systemIndex].PassiveOperatingHeat); // Add heat up to the current PassiveOperatingHeat, 4.0f is just a sample number
                }

                if (UONGame.Instance.PlayTime.TotalTime.TotalSeconds > m_nextUpdatePassiveHeatTime)
                {
                    m_nextUpdatePassiveHeatTime = (float)UONGame.Instance.PlayTime.TotalTime.TotalSeconds + 0.75f + ((float)UONGame.Instance.Random.NextDouble() * 0.75f);
                }
            }
        }
    }
}

To use this code, all that is required is setting the class name StandardSpaceshipExtension in the SpaceshipExtensionCodePath entry on the spaceship config file:
Code: [Select]
/* UNION Spaceship Template v0.01a */
{
"Key": "Albatross",
"IsEnabled": true,
"Data": {
"TypeKey": "Spaceship",
"FactionKey": "UNION",
"IsPlayerSelectable": true,
"ClassType": "Frigate",
"EntityPath": "UNIONBase/Entity/Albatross",
"SpaceshipExtensionCodePath": "UNIONBase/Code/StandardSpaceshipExtension"
        }
}

Now that the modding API has been completed I will, over time, be moving a lot of code out of the compiled game and into the base mod. Anyone can then modify the code and put it into their own mods.


Thanks for reading!

Mark

Pages: 1 2 [3] 4 5 ... 19