Development state video #2 – 06.03.2017

This one is more of an update, really.

First of all, I finally managed to fix the issue with chests not opening. Turns out it was an issue with a random integer being randomized with every check on the algorithm, so when it was checking “is it 0? Is it 1? Is it 2?” the result could be “false” with each pass. Thankfully changing that if tree for a switch fixed the issue.

You might’ve noticed some changes to the UI as well. The previous setup was just a placeholder, now I’m really putting it together. Dodge bar on the bottom, not obstructing the view too much, ammo count and reload indicator on the gun itself for that immersive diegetic UI elements, health and shield bars are next for a revamp.

You might’ve also noticed the menu I called at one point. This one will display all the stats and items you have, as well as your weapon and all its attachments. Hopefully in a 3D interactable form, but…
Unreal’s UMG is a bitch when it comes to putting anything 3D in there. So I’ll probably have to bruteforce it and make something like a tiny miniature gun with a tiny miniature UI be displayed in the world, in front of player’s camera. Oh well, what can you do.

This update I’m especially proud of the floor, though. How it lights up wherever the player goes. Truly a thing of beauty.
To achieve that, I had to use some outdated screenshot from UDK, found in some obscure place, and contents of a NormalFromHeightmap function I had to gut. Whoever thought making it take only TextureObject and not TextureSample… I’ve no idea what were they thinking.

But, hey, it’s the end result that matters.

The level generation is… Progressing. The rooms spawn where they should now, but the only issue is that they seem to ignore part of the spawning algorithm. The part that prevents them from spawning on top of eachother.

Plans for immediate future include: fixing level generation, new material for walls, full revamp of the UI, and maybe starting to work on gun customization.

And some housekeeping at the end: I’m still working out the exact format of my posts and videos, so they will be inconsistent. Sorry for that.

Development state video #1 – 15.02.2017

There hasn’t been many updates recently, right?

Well, you will be delighted to hear, that I am now on a spring break, and that means aaaaall the time in the world I need. And that time will be used to improve this here lil’ project of mine.

What’s next in store? Well, I’m currently working on level generation. I almost got it working too. When that’s done, I’ll add some more rooms, a few basic enemies (or I’ll stick to the practice targets for the time being, we’ll see) and probably, maybe, possibly release an early pre-alpha demo or something.

See you soon, in further updates!

Devnote Friday #7

Today with less content and more plans. I thought it’s still worth noting both the progress and the plans, ad futuram rei memoriam.

Today no gifs, just me talking about short-term goals for OneGun (this name really did stick, didn’t it?)


Battling current issues

I still, for the love of me, can’t get the practice targets to reset on a push of a button. I know how to do it, it did work if it was just set on a timer in the target’s actor itself, but when it needs to be activated via external means? Not looking so hot.

Also, I’m trying to make a beam of a variable length as one of environmental hazards. In one of the previous posts you could even see it. It was initially achieved using a cylinder with no collisions, that detected when a player is overlapping it.

The problem with that solution was that the beam would have to have a static length and could not be blocked by, say, a crate. That’s why I opted for a raycasting method instead. And it works.

What doesn’t, is the particle beam effect, that passes through walls. I need to find a way to stop it at a location of the raycast’s hit.

Last but not least, I noticed that even when the health variable has a range of 0-100, being healed for 10 points when having 99 health will put you at 109 in total. Which should not happen. I need to find a way to fix it as well.


What’s coming in an unspecified future

First thing’s first, an actual, moving, attacking enemy. Maybe a futuristic Roomba with spikes for now, but something that actually moves, even if erratically, and can be destroyed.

Besides that, exploding barrels would be nice. I made one that shatters (it was shown in the last post), but I can’t get the damage dealing to work. Haven’t put much thought into it yet, though, so I’m willing to bet the solution is extremely obvious.

And maybe some better looking particle effects. They are a bane of my existence.

There are more things that need attention, for example connecting rooms in a randomized pattern to make a level, the gun customization system, or enemies with an actual AI. But I’d like to keep it simple for now. We’ll get to the more elaborate systems eventually.


Afterword

Don’t drink and drive study and make games, kids. It will hurt you and the ones close to you.

Devnote Friday #6

Not much has been done this week. To be honest, I almost forgot to post about anything that was done. Juggling game development and college isn’t easy, and it is taking its toll. Don’t do it, kids.

I managed to implement two little features, however.


Destructible Meshes

 

You shoot something, this something blows up and falls apart. That’s about it. I still need to tinker with physics settings a bit a lot, but it’s there and it’s working. More or less.

The barrel needs proper inner walls, as well as it has to damage the player. Some actual explosion effects would also be nice.


Beam Hazard

Just a simple beam, you may think. And you would be right. But it’s nice to have it.

The beam itself passes through objects, as you can see, but the damage dealt doesn’t. It’s all a matter of playing with the particle emitter, and somehow limiting its range. Can be done. Probably.

If you were to ever want to create such a beam yourself, remember one thing: raycasts happen from world location to world location. They’re not relative to the actor, they’re absolute in the world.


Afterword

I’m no longer entirely sure whether or not Devnote Fridays will remain a regular thing. I wanted them to be, I really did, but I thought about it and… I don’t think there’d be any point in making posts titled “I’ve done nothing thos week!”.

That’s why, from now on, Devnote Fridays will be happening if there’s something to actually show. I think. I don’t know.

Time management is hard.

Devnote Friday #5

Today a little bit earlier. That’s because I finished what I could, and what’s left is simply too time-consuming for me to start now. Making games until the first rays of sun start shining through the window? Not always the best idea.


Target Practice

Nothing terribly special, just simple targets to practice your aim. They react to hits, they have hit zones (headshots and bodyshots), and were created so I can have something to test any enemy-related mechanics without making actual enemies yet.

So far they only fall over, but a button supposed to reset them was created. Except it doesn’t work. And somehow interferes with the next feature I’ll talk about in this post, causing it to not react to player’s input. I may have an idea how to solve it, though.

The whole “doesn’t even reset what it’s supposed to reset” part, however? No idea. Yet.

Next step (after getting the reset to work) will probably be triggering some events when all targets are down. That’ll be a base for a mechanic of clearing rooms to progress.


Health Mote Spawner

Probably more of a test room/tutorial thing, than an actual in-game mechanic, but it can be easily customized. Buying health for coins, perhaps? A rare chance for the spawner to spawn in a secret area? We’ll see.

So far it does what it’s supposed to do. I had some issues making the “press E to interact” prompt face the player at all times, but I managed.

And now I’ll be abusing this newly acquired technology.

Expect prompts and popups following you everywhere.


Afterword

Come this Monday, academic year begins. My third semester in IT college. While it does give me opportunity to learn, and possibly create better things more efficiently with the acquired knowledge, it will be a significant hit on the amount of time I can spare for OneGun, no doubt.

There may come Devnote Fridays, when there are no gifs to show.

There may come ones where there is no text to write either.

But even during those ones, you will still get an update. An update on a lack of an update if need be, but an update nonetheless.

Devnote Friday #4

It’s 4:38 in the morning here, but damn it was worth it. It just feels so good when you finally get the thing that wasn’t working to work. When you implement a feature without having to look at 17 tutorials on Youtube. When you feel like you’re making progress – both in the project and as a developer.

Here’s this week’s summary in development of OneGun. Still not sure about the final name, by the way.


Fire rate limits, using up ammo & reloading

For the longest time I was wondering whether the game should have limited ammo and have you rely on ammo pickups,or just have no limits allowing you to shoot endlessly. Eventually, I decided to go in the middle – your ammo isn’t limited, but you do have to reload. That will make balancing high-damage combinations easier.

Also, reloading, with its own, fancy meter. No, not really that fancy. The entire UI is a placeholder at this point. But it works. And that’s what truly counts.

And don’t look at that jiggling buzzsaw. It’s supposed to spin. It doesn’t, though. For reasons unknown. Beauty of developing a game, ladies and gentlemen – you fix one things, another one stops working.


Health pickups & a working HP gauge

Basically, this. Health pickups are now a thing, pretty fancy looking too, if you ask me. That means you’re no longer doomed to fail when you’re at 10 health, facing a room full of buzzsaws. They will be dropping from enemies and stuff, I may even add some fancy jiggling animation to them.

And, yes, the HP gauge that was a source of my misery finally works! And the error was the most stupid thing imaginable!

Who would’ve thought, that in Unreal Engine 1 = 100%, not 100 = 100%!

I’m not the only one who made that mistake, right..?

Right..?


Afterword

This week’s been rather tough, but it’s only going to get tougher. Especially when September ends and college starts. Even less free time to work on the project! Woohoo!

That’s why I need to do as much as I can before October.

Devnote Friday #3

Update on a lack of an update

Basically, this. Not much has been done this week, at least not much that could be shown in a GIF or a screenshot. It’s been mostly me fixing messy Blueprints of already existing systems and trying to make my programmer’s art a little less programmer-like.
And me fighting with That One UI Bar That Just Won’t Show What It’s Told To Show.

And that’s basically it. I’ll try and have a bigger update for you next Friday. Though I can’t promise anything. Now we’re getting into a realm of features that aren’t so easy to implement.

Devnote Friday #2

I’ll be honest with you, I was uncertain whether I’ll have something to show today or not. Some of the things that now work work, even though I have no idea why, and some things don’t work, and I also have no idea why. Besides, smoothing faces in Blender screwed me over. Always export your *.fbx files as binary, with exported face normals. Just so you know.

But I do have something after all. Two and a half somethings, depending how you look at it.


Damage dealt to player

Yep, player can be damaged now. All damage taken is displayed in the console so far, but I’ll implement some better way when the time comes. Also, death screen. Not really. Just a widget that’s being created when health value reaches 0. But it looks cool.

I had to make HP a float instead of an integer, since ProgressBar widget doesn’t take integers. That lead to what you can see, health going into negative. It’s an easy fix, though, I just somehow overlooked it. Will be fixed Monday, probably.



Damage dealt by environmental hazards

You might’ve thought those two are the same, but you’d be wrong. Player receiving damage and responding to it is completely different from anything dealing damage to player.

In any case, there’s a template for some stationary, or maybe even moving environmental hazards that damage you when you touch them, so that’s done and waiting to be reused. Whew.

Still can;t figure out what the hell’s wrong with the cannonballs you can kinda see at the beginning. They act all kinds of weird, and I’ll probably remake them from scratch at this point.


Damage being displayed

The reason I had to make health variable into a float instead of a simple integer. And bane of my existence at the same time.

I’ve tried three different methods of displaying the HP of player on the bar. One of them was a step-by-step recreation of an official Unreal Engine tutorial.

It still doesn’t work, doesn’t show the HP you have until it reaches 0.

Oh well.


Afterwords

I also can’t, for the love of me, decide on a final name of the project. Maybe when it’s a little bit more complete I’ll be able to select the best name that suits it. So far, let’s stick to OneGun, or just The Game.

Devnote Friday #1

And here’s the first devnote post, after first week of the game being in development (I’m saying “the game” because I’m, honestly, still uncertain about the final name.

I’ll try posing every Friday from now on, even if I have nothing exceptional to report. I think it’s a good way to keep myself in check, as well as to let you know that neither me on the project is dead.

Some may say it’s too early for devnotes, but me, personally, I like the idea of documenting the game from day one. Plus I’ll try to talk through some technical details here, so if you’ll ever have similar problems with your projects you can see how I tried to solve them.

But let’s get to some of the features are now complete!


Dodging & Dodge Cooldown Meter

Hoo boy, was this one a bitch to implement… First I had issues with the character not moving at all due to friction, so I increased the launch speed to ludicrous amounts and it worked.

Too well, one may say. Were you to jump and dodge at the same time, you’d slam into a wall at Mach 10. The easiest way to fix it? Disable dodging while mid-air.

That didn’t solve the issue of being able to launch yourself from a ledge, or even a crate, though. What did the trick, was adding a timer which, when countdown of few milliseconds is over, runs a branch that divides the velocity values by 10 and adds some downwards velocity.

Thanks to that I was able to restore dodging while in air.


Shooting and projectile template

The essence of the game is being able to upgrade your gun to act in various… Interesting ways. To shoot bouncing projectiles, flaming bullets, explosives, and whatever my imagination brings.

I implemented an example projectile, how one of the combinations may look. It glows, it leaves a trail, it bounces, it explodes.

Explosion particles spawning wasn’t a breeze to make, let me tell you that much. The event that should run a graph when projectile stops didn’t work, in the slightest. Particle emitter, once spawned on hit, couldn’t be despawned…

What fixed the issue with not being able to despawn an emitter was taking a projectile lifespan time and feeding it to a delay node between an EventBeginPlay event and spawning a new actor on the last known location of the projectile.

Yes, spawning a new actor that had a particle emitter with explosion particles and a light attached to it. And it also had a self-destruction mechanism after a millisecond or two.

Huge shoutout to people from Game Developers League Discord server. I wouldn’t have been able to solve some of those issues without them.


Afterword

Coming next week (hopefully) player health and environmental hazards. Don’t want to make any promises, but that looks like a sensible goal.

Also, yes, I know my particle effects suck.

The process begins…

After much procrastination, countless trials (and errors), experimenting with various genres and ideas I present you my first project that is going public.

Codename so far is OneGun.

You have one gun, but countless upgrades to it you can find. Swap stocks, receivers, barrels, attachments and whatnot. Get various projectile effects – bouncing, explosions, fire damage, AoE aura… You name it!

The work has officially started and I’ll try to keep you updated on the progress as best as I can.