3D Platformer GameDev Series – Weekly Blog #21: Adding Enemies (Part 4)

Hello everyone! Today, I will complete the last lecture on “Enemies” in the 3D Platformer Course. Last week, we finished implementing the enemy skeleton’s attack, allowing it to deal damage to the player. However, on the other hand, the player is currently unable to defeat the skeleton.

In many 3D platformers, one of the primary ways for the player to defeat enemies is to jump on them. Primitive, I know, but functionally useful so it makes sense to learn how to do this! Thus, this will be the main focus of today’s blog post.

To implement the player’s ability to attack by jumping, two hitboxes are created. The first hitbox is located at the top of the enemy skeleton’s head:

The second hitbox, named “Enemy Hurtbox”, is created and positioned at the player robot’s feet. Here, a rigidbody component is further added to it, allowing this hitbox to interact with the skeleton’s hitbox:

A new script named, “HurtEnemy”, is then created and attached to the “Enemy Hurtbox” on the player:

Another new script named, “EnemyHealthManager”, is created and attached to the skeleton. This script contains a function called, “TakeDamage()”, which is called by the “HurtEnemy” script created prior:

When the game is played, we can see that the enemy skeleton disappears as soon as the player jumps on its head:

In order to improve the aesthetic of the skeleton’s death, three things are done: playing a death sound effect, making the player bounce up after landing on the skeleton’s head, and leaving behind a particle effect. Implementing the above makes sense as we have learned how to do all these things before: playing a sound effect when collecting a pickup back in weekly blog #13, adding a knockback to the player when taking damage in weekly blog #8, and leaving behind a particle effect when the player is killed in weekly blog #10.

To create the bounce-up effect, a simple function similar to the player knockback is added to the “PlayerController” script:

Next, the “EnemyHealthManager” script is updated to call the “Bounce()” function. In addition, two simple lines of code generate the enemy death sound effect and particle effect:

By tweaking the player’s death particle effect and applying it to the skeleton, we can see that the player’s jumping attack on the skeleton is now much more interesting than before:

Last but not least, to reward the player for successfully jumping on and killing an enemy, a new coin prefab (a silver coin) is first created from the coin added earlier in weekly blog #12. The “EnemyHealthManager” script is then updated in order to instantiate the silver coin appropriately:

Lo’ and behold, here is the in-game result for killing an enemy skeleton:

That’s it for today’s blog post – which also wraps up the course section on “Enemies” in the course. Believe it or not, today is a major milestone in the course as we have all the game assets necessary now to start making actual levels/stages! No more mock game scene, woot woot!

Indeed, the next section of the course will look at designing levels – no doubt, I will get a chance to design my first level for a 3D platformer! I’m very excited about this… Stay tuned!

– Taklon

3D Platformer GameDev Series – Weekly Blog #20: Adding Enemies (Part 3)

Hey everyone! I apologize as it’s been nearly a month since my last blog post – I have simply been preoccupied with things other than game development. But, the important thing is that I still intend on completing the 3D platformer course by the end of this year. As 2020 unwinds, I have to put a bit more of my spare time into the course over the next few months. With that, let’s jump right into Unity and continue where we left off with our enemy skeleton.

After setting up the AI states for the enemy skeleton earlier, one final thing that needs to be done is to return the enemy skeleton to its patrolling state when it’s in the attacking or chasing state and the player is no longer within attacking or chasing range:

Behold, the fully-implemented AI states of our enemy skeleton in the game:

Next, we will create a hitbox for the enemy skeleton’s attack. A hitbox is an invisible, defined area whereby damage is incurred. In this case, a damage hitbox is added and activated in the skeleton’s attack animation (as soon as the skeleton begins to attack) and deactivated when the skeleton completes its attack. If the player is inside the hitbox, damage is done to the player (via the “Hurt Player” script which was created earlier when the player health system was implemented):

Let’s now see the skeleton’s attack causing damage to our player in the game:

That’s it for this week’s blog! I hope you enjoyed the read. Next time, we will implement a way to allow the player to kill the enemy skeleton. It wouldn’t really be fair otherwise, right? 😉 Upon killing the skeleton, this would further spawn coins for the player to collect! Stay tuned!

– Taklon

3D Platformer GameDev Series – Weekly Blog #19: Halfway Point

Hello everyone! Unfortunately, for this week, I was not able to make any progress in the 3D Platformer Course, and thus, have nothing to share today on it. 😦 However, rest assured – after recently passing the halfway point in the course, I should and will continue to aim to complete it by the end of the year.

So instead, for today’s blog, I thought I’d share with some of you my thoughts on… Virtual Reality (VR). Yes, kind of random, but still quite relevant to my blog and I’ll further explain later. You see, I’ve been skeptical about VR technology for some time, albeit quite intrigued about it in recent years.

In the past few weeks, my curiosity eventually led me to purchase and pick up a VR headset today, the Oculus Quest. I must say, the technology is indeed rather revolutionary with its capabilities and it is by no means considered “new” technology anymore; there is now a fair amount of VR content out there for the consumer who is able to afford it.

Growing up, I’ve always to some extent felt immersed in any and whatever game I was playing (the SNES is still my favourite console to this day, but I digress…). After all, gameplay was and is still what matters the most to me. Still, with modern games of today, I cannot help but notice more and more the unimaginably realistic (3D) graphics and physics. In turn, these are factors that also begin to matter more and more to me naturally – and I can especially understand and appreciate this from the perspective of VR gaming now.

I guess what I am trying to get to is, as VR technology continues to advance, could it one day overtake what may then be considered as “traditional” (for lack of a better word) console and handheld devices to become the “new norm” for video games? As a game designer/developer with any insight to the future, this is perhaps something worth pondering over…..

So Taklon, what’s in store ‘for 2020’?

On New Year’s Day, I revealed that I had been struggling with dedicating time and finding motivation to improve my skills involving graphics, animation, and game design – all of which speaks to the essence of my blog.

Needless to say, the first few months of 2020 leading up to today have been stressful, uncertain, and rather grim for everyone. As I am writing this blog post, the Covid-19 pandemic continues to weigh down on every single one of us and is expected to continue to do so for months ahead at the very least.

From early to mid-February (just before the Covid-19 outbreak had occurred here in Canada), I was fortunate to had the opportunity to travel to Japan for the first time – my first solo trip abroad. Memories of the time I spent there, are thus, still fresh in my mind. And if I had to choose, highlights of my trip involved visiting awe-inspiring places such as the Studio Ghibli Museum and Team Borderless Digital Art Museum. But above all, I am finding that it was moments of complete solitude in Japan that I enjoyed and appreciated the most as it really gave me a chance to look back and to look forward ahead on what I wanted and continue to want to do in life.

Looking back, last April, I began working with Blender 2.80. At that time, I also took a dive right into the Unity game engine along with some coding in C#. With the help of some YouTube tutorials, I worked on a game. Although I made some progress in the end, I regret to say that I will be putting this project aside for good. It was a valuable experience nonetheless:

taklongameabandon

Flash forward one whole year later and I am realizing that following tutorials on YouTube and essentially replicating more-or-less what is shown isn’t exactly how I want to approach the learning process moving forward, especially in an area such as game development. So, I figured since I had a successful experience with the previous Udemy course I had taken, I decided to enroll in another course on Udemy: Learn to Make a 3D Platformer Game with Unity:

udemy3Dplatformercourseimage

Unlike the previous Udemy course I had taken, the instructor in this new course I am taking does not provide tests or encourage his students to test themselves to see if they understood the material after they complete a course section. Thus, my approach for completing this course is very simple. That is, I will go through each section of the course as slowly and as many times as necessary. The process to my approach is twofold. First, I will move on to the next course section if and only if I can produce the material in the current section on my own. Secondly, I will re-visit older sections (not necessarily just the previous section) as I reach further into the course.

My endgoal objective is to be able to take everything that I learned in the entire course and make a 3D platformer game on my own using original game assets I have made myself in Blender (instead of using the ones provided in the course) – in other words, this means making a simple, original, and complete 3D platformer game without referring to any course notes or videos or tutorials online (i.e.- YouTube).

Last but not least, I will be committing to weekly blogs on my progress for this course! So do stay tuned for my first blog post on this ‘GameDev’ series, where I will begin by sharing my thoughts on 3D platformer games in general. 🙂

– Taklon

For 2020.

And just like that, another year has passed by… Maybe it’s just me but perhaps there’s something about the start of a new decade that makes one especially reflect and ponder about life choices? I mean, setting aside the fact that it has been nearly half a year since I’ve last posted on here, there’s a lot I’ve been thinking about in what I want to try to achieve with this blog – and I think that hasn’t really changed much since I started writing it back in July of 2018.

Passion? Yep, it’s definitely still there. Motivation? Ehhh, not so much (I’m sure most people can relate though, right?!?! *nervous chuckle*). But seriously, I find if I try to tackle the problem of motivation always, I seem to arrive at the same conclusion nearly each time; that is, the solution for me often comes down to time management. In being honest with myself, I always understood that it is not a matter of whether or not I have time to spend on some of my hobbies and interests, but rather, how much time do I want to or should I devote? And then I realize that this should not be a question I should have to ask myself altogether! To simply put, I need to make better use of my time. Yes, I need to work, cook, eat, bathe, sleep – who doesn’t? So, if I truly have passion then, I need to convince myself and instill in me a routine – a constant and inherent need – to be creative and learn and do graphics, animation, and game design – lest I should change the title of my blog!

To wrap up, I would just like to further mention that I have never ever understood or made New Year’s Resolutions. In fact, I still shudder and cringe a bit at the notion of the first day of the year being the day to make a case on whether or not one should improve him or herself (I mean, really, for goodness’ sake!). Then again, maybe it’s not so absurd after all… So maybe, just maybe, I should make an exception for this year. For 2020.

– Taklon

Taklon’s First Blog Post

So I finally decided to start a blog. I’ve thought about doing this for a while. I think I’ve been hesitant because I figured there wasn’t anything in my day-to-day life really worth sharing on the public domain. Yet I say this and call myself a variety streamer on Twitch, a live-streaming platform… but I digress! Perhaps blogging is for my own sake as well – that one day I might be able to look back and see how much I’ve learned, discover how much I’ve grown, and realize how much I’ve done. I guess that notion sounds worth it to me.

For my first blog post, I want to begin by sharing something personal. Growing up, I literally had little to no direction as to what I wanted to be when I’m older. While the public education system here in Canada where I live helped open up a fair number of paths for me, I did not let my personal interests nor my educational strengths and weaknesses dictate my decision ultimately. Somehow, I ended up with a major degree in Biochemistry with the option of co-operative education (meaning alternating school and work semesters for those who don’t know). Perhaps more interestingly, I now work as a Radiochemist and have been in this field full-time for more than five years. Looking back, I honestly can’t answer why this all happened, only how at times to a certain extent. “Why did I decide to study this? Why did I choose to do this?” These are likely tough questions I’m sure many young adults like myself have asked at least once throughout their lives pertaining to their careers.

I think it is well-agreed that in life, in society, it is really difficult to find work that you both enjoy and at the very least can make ends meet. However, I think finding a job that you are both passionate about and can provide for a decent living is rather challenging, maybe even near impossible (for the naysayer in me). I am quite fortunate though when it comes to my job – I really do enjoy both learning and doing the work that I do and am pleased with the salary and benefits it provides; I guess then, for these very reasons, I have answered for myself those very two questions posed earlier: Why did I decide to study this and why did I choose to do this? What lacks then is passion. And what remains then is motivation.

Lately, I’ve been thinking about where and how I’m spending my free time outside of work. For those who aren’t aware, I actually have quite a few hobbies and interests some of which I’m especially passionate about like gaming for instance. Animation, exercising, racquet sports, music (I play the violin), and travelling to name only a few are further examples. “Man, I only wish I have more time to do more of these things!” is something I then tell myself quite often. Still, I try and schedule most of these things during any free time that I may have outside more important priorities and responsibilities.

Nowadays, I am intrigued with the possibility of whether I can make a particular hobby or interest become something so much more. I feel now is the time for me to re-discover my passion in designing and making games rather than just enjoying and playing them. And this, essentially, is what my blog will primarily serve to share and document; This blog will be a record of what I learn, how I grow, and what I achieve in my desire to re-introduce to my life a passion of animation and game creation and to also see where my motivation would take me in both of those areas.

Thanks for taking the time to read my first blog post. I look forward to writing the next one! If there is anything you would like to share, feel free to reach out in the comments section!

– Taklon