Comet Project: behind development 2

Hello again!

It's been quite some time since the last development diary, and finding time to dedicate to the project while also working is challenging.

In this video, you can see the new "features" of the Orbit Sweeper.


Comet Project: behind development

Welcome to the COMET PROJECT!

In this video, I share with you the early stages of the prototype. It's still rudimentary, but it represents the beginning of my vision for what this project can become. At this stage of development, I'm solely focused on creating a functional prototype to test gameplay; the graphics haven't been worked on yet, as that phase is reserved for the future if the prototype proves viable. Here, I try to briefly show you some basic functionalities, including the ship's arms designed to tackle space debris, all operated with a simple push of a button. This is just the beginning, and there's a lot to refine and improve.

I employ basic physics to handle collisions, ensuring that control is fluid, responsive, and quick. The ship is built on a skeleton framework, and the arm animations use Inverse Kinematics (IK) techniques to reach nearby objects efficiently. This approach not only enhances the realism of interactions within the game environment but also contributes to a more intuitive and engaging player experience.


Hello "COMET" project

Turns out I'm determined to release a game and, you could almost say, losing the previous one was a stroke of luck.

As I already mentioned in my previous post, I'm going to undertake a smaller project and, at this moment, I'm in its "pre-production" phase, which basically consists of drafting the GDD (Game Design Document).

The GDD is the document that collects absolutely everything about your game, from the story, characters, script, and general ideas to the smallest detail about gameplay, enemy AI, level design, art, music, etc. It can even detail financial and marketing aspects of the game. It is considered a "live" document since it should reflect everything new that is being added to the game, as well as any changes that may arise regarding what was originally written during development.


Change of Course: forced?

Hey everyone,

Life, my friends, has a twisted sense of humor. And sometimes, the universe seems to conspire to remind you that, in this dance of coding and development, you don't always lead.

You've been following the progress of my latest project. Well, it turns out it got corrupted. Yeah, I know, seems like a bad joke, right? Moreover, my backup decided to take a permanent vacation at the worst possible time, because, you know, why not add a little salt to the wound?


Inventory system - part 2

In this post, I will demonstrate how to place an interface over the game screen. However, I will not go into details on how to create this inventory user interface. In a future post, I will demonstrate how to interact with the inventory. For my game prototype, I want to achieve something simple, like this:

Pretty simple and ugly, but will work for now.Drawing the Interface

To draw the interface, I created two Widget Blueprints, I can create a new one through the contextual menu in the content folder.


Inventory system - part 1

The next step in my project will be to create an inventory system for the player and storage containers such as chests. The inventory system will have three components: the player character, the collectible items, and the inventory where the collectible items are stored.Inventory Component

To create the inventory, I will use an Actor Component, a special type of Blueprint that can be attached to any Actor and can add variables, functions, interfaces, etc. However, it cannot add meshes or renderable components.

The component will have three important variables:InventoryItems: a list of items that have been collected and stored in the inventory.MaxSize: an integer that indicates the maximum number of items that can be stored in the inventory.ActualSize: an integer that indicates the number of items currently in the inventory. It is used to check if an item can be taken.


Advices to order Blueprints

This is a very short post to share these awesome videos that can help us to understand and work better with our Blueprints.

On my last post I explained a difficult programming concept called "Interfaces". I just found this interesting video from Youtube channel "Glass Hand Studios" that explains it with a basic example. I think that can be more clear than my post to follow this tutorial:

Glass Hand Studios - I Struggled With Blueprint Interfaces for Years!! (Unreal Engine 5)


Why are useful Blueprints Interface to make buttons?

To make buttons I have done some complex Blueprints with a lot of logic to achieve some nice effects and playability. In this Youtube video you can see the result: Buttons - Features Preview

To make them I made a structure of inheritance similar than the one I have made with lamps, so I have the same lamp features into my buttons: noise, sparks, light, etc. I will not go step by step because my button's Blueprints are very complex but I will explain the general ideas about "Blueprint Interfaces" that let me make the buttons interaction. WHY I NEED BLUEPRINT INTERFACES?

Now I have a new problem: any button on my game can interactuate with any other object or objects. For example: a button can switch on or off a group of lights in a room, trigger an event like spin one time a rotating door, etc.


Lights with more features

In my last post I have created a base Blueprint to make lamps in my game called BP_BaseLamp. With this base lamp I have a basic light system and now I need to add some features which will be useful to improve the game ambient.

I need to add mainly two things: Something to make sound ambient, like an electric hum. Something to make light alterations with intensity variations to represent malfunctional lamps.

For the sound ambient I have added a sound component that is activable through a public Boolean variable. It’s part of the base lamp Blueprint so I can stablish different sound ambient for each derived child lamp Blueprint with a predefined sound. In addition, I will be able to stablish a different sound from the predefined one in every lamp instance.


Creating multiple light types with Blueprints inheritance

In my last post I was talking about the difference between using Lumen or traditional lighting and why I'm interested in the traditional option.

In addition, I created a config scene Blueprint to control the "PostProcessVolume" and switch between Lumen and traditional lighting using Unreal Engine editor and in game.

Now I will go deeper in my lights Blueprints to take some important notes about inheritance and component instances because there are some confusing concepts that I want to clarify. INHERITANCE


Lumen vs normal lighting

I started to do my test room with some rooms and lights.

First I made a Blueprint that has a working light and I want to switch it when I need it, maybe by pressing a button or from an event. To achieve this, I place a simple cube mesh that supports the entire structure and a sphere mesh with a special glowing material that will represent the light bulb. I then place a cone of light attached to the sphere to make the lighting I want.

I know that this isn't the most optimal mesh but it's for testing purposes only. From here I will make a main blueprint to make some child blueprints that inherit the main properties and with some specific options and meshes.


"Customizing" the pawn sensing component

Hello! It's been a month since the last post! I was very busy but I was finally able to find some time for the project.

I got stuck on a small detail with my Poison Drone detection logic: I can't just turn the head of the drone and make the pawn sensing component face the same direction as the head.

This is the drone facing forward, as you can see the sensing component also faces forward:


Following player

To make the Poison Drone sentinel that chases the player, I first created a blueprint where I added some parts of the asset pack that I bought, this asset pack has interesting parts and materials and it allows me to create different drone prototypes for my game.

I already showed part of this design in the previous post, now it's something like this. I'm not interested in evolving this design further for now, since it's enough for me to be a prototype:

The red eye will glow in the dark, I intend to help the player locate the Poison Drone while also making it unsettling.


Designing the Poison Drone

In the game there will be some centinels on the ship looking to destroy you.

During the attack the main AI activate all drones and robots to seek and destroy the attackers, but during the shooting the ship get heavily damaged and the AI loose the connection with her centinels. Then, Mark has to arrange all this mess with all drones and robots looking for him thinking that is another attacker.

The main gameplay will be try to avoid the sentinels but, if you have objects in your inventory, maybe you could make a trap to eliminate them one by one. So, now I want to design a simple enemy.


Adding animations to the character

I was messing with animation blueprints and made the crouch animation. I realized that I still had problems with some animations that can't adapt 100% well over the Metahuman so I toke a break to think what to do. I was playing to Return to Monkey Island last weeks meanwhile. What a great game! Thanks Ron Gilbert!

To speed up the making of my game prototype, finally, I decided to use a realtime retargeter over my Metahuman in the aniumation blueprint using a Unreal 5 mannequin base. Then I get the library animations and transform them into Unreal 5 Mannquin animations using a retargeter from Unreal 4 Mannequin. The result it's far to be perfect but it will work for now.

This is the result with the crouch animation:


Applying animations from the Marketplace on the Metahuman

As I said in the previous post, I have now tried with animations that I can find in the Marketplace instead of recording my own animations. I found a pretty interesting free animation pack with which to start building my character for the game prototype. The problem has been that they were animations created for the skeleton of Unreal Engine 4 and when applying it to the new skeleton you have to make adjustments because the result is this:

As you can see in this animation generated in the Retargeter, the character walks with his arms wide open and his fingers deformed.

To fix this, follow a series of steps:


Live Link Face

After studying my current possibilities with motion capture I have done the same research for facial capture.

It is important since it is not the same to have a character that moves the body but has a static face than to have a character that has a facial expression while moving.

For example, below I put Mark's idle animation. You will see on the left the character without facial expression and on the right the same but with a facial capture.


Research about MOCAP

These days I have been researching motion capture systems to record animations for my character. As I have an impressive budget of €0 and little space at my disposal, I have looked for options that are as economical as possible.

My idea was to capture animations to continue with the development of my character, among them I need animations of walking, running, crouching, pressing buttons and crafting inventory items. Now I am in a very early phase of development, the prototype, this implies that I want to obtain a playable base to evaluate if my idea is fun to play and I have realized that it is not the best time to complicate the development.

So I have decided that for now I am going to buy animation assets with which to create the prototype of the game.


Designing main character

"This is Mark, a normal guy tired of his work because it is hard and lonely. He is the maintenance engineer of an automatic transport spaceship and he has been the only crew member for five months, during all this time he has been supervising the transfer of materials between the Earth and the Ark1 station at the Lagrange point L2."

Mark is the provisional name that this main character will have during the development of the game because I am not sure what name to give him for now. To create Mark I have used Epic's Metahuman technology, it is a human creator similar to a character editor that we could find in a video game such as Mass Effect.

My intention is to import the character in Unreal Engine and base the development using this "metahuman", so all the animations and their logic will be linked to this technology. Surely in the future I will make changes to it but for now I am quite satisfied with the result I have obtained since, in the end, it will look a bit far and I am more concerned about other aspects such as: how I am going to animate it.


What game I want to do?

I have in mind to make a short sci-fi survival game. I'm not sure about the duration but for now I don't think it will exceed 5 hours. Plot

The game will take place in the not too distant future during the construction of gigantic space stations at the Lagrange point L2, near the remains of the James Webb telescope. The necessary materials are transported from Earth in huge space freighters. They are commanded by an AI and has a crew composed by a lonely human maintenance technician and, to avoid attacks and stowaways, robots and sentinel drones. In the game we will embody the maintenance technician in one of these cargo ships and, obviously, something goes wrong.

There is an explosion that causes serious damage to the ship and the AI that governs it loses control of all systems and sentinels that, for some reason, remain programmed in “search and eliminate” mode. The game will start at this point and we will have to repair and get the ship to a safe port while we survive the attacks of the sentinel robots.


Installing Unreal Engine

The first logical step is to install the Unreal Engine and get started. In this post we will briefly describe how to install the engine.

Before continuing, I would like to emphasize that all the screenshots will be in English. I recommend using the English version of the software because it's not fully translated into some languages like Spanish. Also, another reason why it is advisable to use Unreal in English is because the concepts in the world of programming tend to be in English, for example: we usually say "shader" instead of "sombreador" in Spanish to refer to the part of the software that draws the screen.


Initial advices

Before I start my project, even before I start designing how I want my game to be, it's time to get familiar with Unreal Engine.

I have been learning what I could in tutorials, Udemy courses, etc. and I would like to advise free resources where to start to learn how to handle Unreal in a practical and easy way.

Being free resources they are limited but they can be very useful since this software is complex at first and it is easy to get lost.


Why Unreal Engine?

Why Unreal?

It is a difficult question to answer...

There are many solutions and engines on the market (Unity 3D, Godot, Game Maker, etc) and they are all good options, but not for any project. You have to think about what game you want to make and find the option that best suits the needs of the project you want to create. If you want to be sure you must know each of the options and it becomes difficult or impossible to know if you have chosen well.