Pausing development

I'm pausing development of RetroBlast for now, as I'm using what free time I have to develop on my animation skills .

What goes with marshmallows? Bonfires

The primary platform for Retro Blast is mobile with the focus on making it a fun quick "commuter" game with a lot of depth to it.

I have a Samsung Galaxy S6 and an iPhone 4s.
I push builds to my S6 and play the game on my commute, this allows me to actually play the game for fun and takes me out of "dev mode" so I can really identify what is wrong with my game. (At the moment it's the lack of a "goal" more about this in a later post)


I recently installed the Android 6.0 Marshmallow update and I had locked down UE4 at 4.9 so I would have a stable engine to build Retro Blast, unfortunately 4.9 has a texture rendering issue on Android 6.0 so I was forced to grab 4.11.1.

4.11.1 did fixed the texture issue, but it also broke a few other things that were working....
 

Issues:

  • High speed physics collisions no longer effect the actor rotation.
4.9.1 4.10.2

Fix:

Turned off CCD on the root which had (no collision anyway) CCD was turned on for both the static mesh and the root sphere.
  • When physics items are detached they do not retain the momentum their parent had.
4.9.1 4.10.2


Fix:
From what I can tell attached and detached items get their "set simulation physics" reset now, I just added a "set simulate physics" on the Release Item event just after the detach.

  • Held boxes have no collision
4.9.1 4.10.2


Fix:
The boxes are attached to a "PickupArea" collision cube, it looks like in 4.10. The attached object inherits the collision information from the component they are attached to, previously the collision cube was set to Query only, I set this to collision enabled and this fixed the problem.

  •  Held boxes cant be dropped
4.10.2 4.11.1


Fix:
I used a "Is overlapping actor" bool linked up to the EndOverlap, which was incorrectly firing constantly...I'm sure I've had an issue in the past where an event was incorrectly firing...


There is another bug that the upgrade caused where ribbon particles no longer render but from a quick search it seems like it might be an issue that I can't fix at the moment.

I was meant to spend my weekend implementing cool new features but instead I've been on smore eating duty... I mean I did manage to find the time work on a camera collision shake for walls that is separate from the damaged state.


Feature creep is real

Hello, it's been an entire month since I last posted an update!

Since then I have done the following:


I was running out of space in my floppy disk sized brain, so after looking into a few solutions I decided to opt for using Trello as a project management / feature tracking tool.

I breakdown features by priority, this allows me to focus on a single important feature, instead of getting caught up on smaller details.

  • Roped in an Audio Designer.
I'm mediocre at most things but my audio abilities aren't even palatable to my own ear, so to help give the game some much needed atmosphere and feeling I've found myself an audio designer.

  • Set up my own dedicated Perforce server.
Which was easy thanks to the creator of this YouTube playlist.
I've done this for two reasons:
  1. Copy pasting the entire game folder to archive and have a backup is poor practice
  2. This allows other people to work on the project with me

Things I've done to the game:
  • Added basic VFX
  • Added the first implementation of the regenerating fuel resource system

    I made the fuel grow exponentially overtime which was a bit of a pain to figure out but it was something I really wanted to learn how to do.

    I had two options

    1. Make int multiply by the power of 2 then clamping this to a range which would give me a constant growth over time for my fuel.

    2. Use a timeline from 0-1 and multiply the value.

    I went for option two because it gave me more control of the curve and length of time. The downside to this is (as far as I'm aware) you're unable to change the time of the timeline during runtime. So regardless of the max value it will always take a static duration of time to reach max.
 
  • Added a basic TouchUI
  • Changed boost to a button
    (I over engineered this swipe to boost system and a lot of people couldn't understand it without a lot of explanation)
  • Added a very basic textured 3D model for a ship
  • Implemented a more advanced camera interpolation system that zooms out + tilts when moving fast in a direction
  • Begun writing code for design elements/actors!

Retro Blast - CL40

If you want a thing done well, do it yourself. Part 3

So since my last post, I've done the following:

  •  Implemented
    • Swipe to Boost system
    • Simple HUD colours
    • Linear Dampening into the Movement system
  • Cleaned up the spaghetti code
  • Fixed the following bugs:
    • Double tap for break isn't not working correctly in all circumstances
    • Player can move while break is held
  • Decided to ignore for now:
    • Fixing the PC controls
    • The 1-2 second hitches (caused by garbage collection)
  • Discovered a bug with the way UE4 handles touch input.

Games development is inherently illogical.

If you hold down the virtual joystick on one area of the screen (Touch 1) and then begin tapping on the other side of the screen (Touch 2) infrequently the InputTouch Released event will trigger for both the Touch 1 and Touch 2 event.

This occurs even though Touch 1 is still held down, causing the virtual joystick I created to "cease functioning as intended" dev speak for break.

Logically, that print should never fire. "Logically"



Lets work through this, we get the InputTouch - Released event. This only triggers when we stop touching the screen with any one of our fingers, we then check to see if the finger that was released was Touch 1, if it was we then check to see if Touch 1 is still pressed down.

You can see that Touch 2 (Blue) occurs and as I physically release Touch 2. The game triggers a release on Touch 1 (Green), which triggers the illogical print to fire and then releases Touch 2.


Fortunately we can work around a bug once we know what the bug is, all we need to do is add an extra bool and check to see if Touch 1 is still held.

The mind boggles.



If you want a thing done well, do it yourself. Part 2

I've done it!


Retro Blast - V0.182 

What you're looking at is the first rudimentary implementation of my own virtual Joystick that not only imitates but improves upon the one that comes with the engine. 

  • Bugs
Double Tap isn't not working correctly. - Easy fix
You're able to hold break and move at the same time. -  Easy Fix.
This can potentially be expanded into a gameplay feature.
Hud doesn't scale to screen size - ???
I'm unsure how long this will take to fix. I can imagine the fix would involve plotting out the items using as percentages and then using the screen size to scale things into position correctly.

e.g. "Health:" is at 50% Y and 95% X - Screen size is 1280(w)x720(h). w*0.5 = Y Position h*0.95=X Position

  • Notes
    • I need to add the boost to the touch controls (After doing a quick playtest)
    • I have yet to test this on a cooked mobile build
    • The previous mobile cooked build has serious 1-3 second hitches
    • I need to clean up my spaghetti code into organized bite sized portions
    • I broke all the pc controls while getting touch to work....



If you want a thing done well, do it yourself.

I've gotten some player feedback that I should consolidate my controls.

  • Problem

I've been told that moving your thumbs up and down the screen to access these areas isn't appealing and I'll be honest I threw this together for a quick play test to see if these should be implemented as full features.

  • Current Implementation
(Red line draw over so it looks like I know what I'm doing)

 

These controls are "implemented" using the InputTouch action and a few bools.
 
This solution while quick has a few downsides.

1. InputTouch only fires once per press / movement
2. The location output will update to the next input location (e.g. 2nd finger)

Useful for quick "Screen buttons" like I have above especially as it functions while Epic's Virtual Joystick is working but not exactly intuitive and no granular customizability on my end.
 

  • Potential solutions


- Easy - Remove the break and boost from the game
- Hard - Integrate the break and boost into the my own custom virtual joystick
- Cop Out - Move the break to the other side of the screen and add on screen buttons

I obviously went for the hard solution because I had a cool idea.

  • Idea

If the player double taps and holds down their finger in the joystick dead zone (Red) then they will begin to break and if the player moves the joystick outside of the normal joystick navigation area (Blue) twice then they will boost.
I'll then complement these actions with the UI & Ship model changing colour to indicate these actions are going to occur.

  • Implementation

The next post I make will cover how I implemented the system.

 

Questions make you smarter

Hello and welcome to the emporium of imagination also know as the Retro Blast Dev blog.

The vessel to post questions about how to do things in UE4 (Unreal Engine 4) and then attempt to answer my own questions, because asking questions will make you smarter if you ask the right ones to the right people.

Anyway if you haven't noticed already I'm going to keep the language casual and the grammar incoherent.

  • What is Retro Blast?
 
Is the working title for what I've wanted for a while, a good mobile shmup.


I started working in Retro Blast around the start of 2016, with the intention of making a mobile shootem up that had the essence of two of my favourite games Capcom's U.N Squadron and Bizarre Creations (Now Lucid Games) Geometry wars.

Unfortunately I've kinda strayed off the track a little. I started with the twin stick shooter template and have slowly nurtured it allowing it to naturally evolve into what the game wants to be, following the "fun" where ever it appears.

  • Who's working on this?

Currently I'm working on all aspects the project by myself.

  • Game Synopsis 
 
You are a wo/man controlling a ship, inside of a much larger ship that is controlled by an AI.
That AI for some reason or another is now self aware and would you believe, it wants you dead.
 
  • What actually is Retro Blast? 

Ok, I'll be honest initially I just wanted a side scrolling shooter but then one thing led to another, I kept trying new things and kept adding things that would sound fun but also challenge my abilities in UE4 which would in turn force me to learn something to solve a problem.

Retro Blast in it's current state is a top down shooter with physics driven movement, it's somewhere in between asteroids and a really basic version of geometry wars.

I'm currently aiming for a rouge-like where the player has to escape an AI by navigating through levels and physics puzzles



Current feature list:


  • Physics Based inertial moment.
  • Limited Fuel and Ammo based resource system.
  • Difficulty based Ammo pickups.
  • Basic AI with gradual difficulty curve.
  • Android Support.
  • Two Tier damage system.
Future feature list:
  • Custom touch screen controls.
  • Play testing of 3 different resource systems.
  • 1 Prototype level that showcases Combat, Navigation and puzzle solving.
  • Reverse camera lag.
Currently working on:
Custom touch screen controls 

Retro Blast - V0.182