Devlog 3 (2024 Course)
Project A » Devlog
Preamble
So I've taken this course a few years back, right, so first several of homeworks are already uploaded here. This led me to an Idea to try, in the meantime, buld a jumping game from scratch to hand in for this year's Project A.
Given I barely touched Unity ever, it seemed like a bad idea, but in the other hand, I had a lot of fun making low-level games in Pygame back in the day, so it surely wouldn't be that bad, right? Right?
- Activity
- I've created one level of a jumping game and everything that goes with it, with exceptions, because my perfectionism is a bitch.
- Sprites are downloaded from Opengameart.org
- I've implemented several scripts during the development - mostly I tried to understand the Unity workflow and get notion of what is the right (or at least right-ish) way of doing common stuff. I'll list some of them and what they do later in this post.
- The level design tries to achieve two things:
- Show what I managed to implement and to what extent
- Fit to just few minutes of gameplay
- Also, I spent an unreasonable amount of time randomly texturing walls to make it pretty at least for the first sight.
- The game does not have SFX or music, but it does have (some) animations. I decided to learn with the Animator component instead of caring about including sound - FOR THE TIME BEING
- Scripts and what do they do
- PlayerController.cs - It hosts few methods that are being invoked by advanced controls during gameplay, and some basic logic goes here, but I tried to write as little boilerplate code as possible, so most of the functionality is actually shared in other components
- SlimeScript.cs - Basically the same thing, but for an NPC enemy. It has no interesting AI, it runs to one side until it hits a wall and then it flips.
- TouchingDirections.cs - Component responsible for detecting a wall around Player, NPC, or any other game object, using Colider casts. It also sets bunch of variables for the Animator class, so I am able to apply some situational animations - although not many
- Damageable.cs - It hosts logic for having health, being able to take damage and die, together with other Animator variable setters and an invincibility timer to prevent damage clotting.
- BasicMovement.cs - It provides some simple stuff like walking speed, ability to jump or walljump, power of such actions, logic for them, and as usual, setters for Animator
- Attack.cs - This one's interesting. I went for the Mario-style combat, which means stomping enemies' heads in. For the most part, I just attach this to some kind of 2D collider and tell it how much damage it should deal, if it has knockback and bounceoff, and how strong - knockback knocks the enemy back after dealing damage, bounceoff knocks back the damage dealer. This is vital for the Mario-esk bounce after the head-jump
- FadeRemoveBahviour.cs - This is first of two Animator behaviours, which makes dead enemies fade over time and then Destroys their GameObjects. I'm kind off proud of this one.
- SetBoolBehaviour.cs - This is pretty general behaviour for Animator, that is able to set bool states depending on the current state of the StateMachine which alters the animations of the object. Thanks to this, I can spread the information about dying, for example, to different scripts, without really including Damageable component to all of them. This can for example prevent player from moving after dying - although I forgot to check for it with jumping and turning around, so it works, I'm just dumb.
- +few more inferior ones.
- Notes
- I'm not really happy with the outcome, since, as I said, I'm a perfectionist, and this project is by all means not perfect. That said, I intentionally went for a project I had no intention to finishing, just so I have the luxury of not being efficient. That allowed me to try and discover stuff for myself, make mistakes, look for a fix, and for a right way to do things. And that is really what I wanted from this project.
- Together with tutorials I've seen during developing this abomination, I became way more confident about developing in Unity. I got the workflow into hand and I think I can handle way more interesting projects, some of which I plan to realize during this semester (hopefully, since I have no idea what kind of homeworks are going up)
- One thing, for example, I'm still yet to discover, is a good way to detect cliffs so I can flip direction of movement of an AI without having a wall. I just didn't get to this part of the nice tutorial series I picked for learning, but I know it's there and haven't figured it out myself.
- Invested hours
- Lots. As I said, I allowed myself to venture off on little stuff to just get to know each other. I've made terrible mistakes and slowly discovered how to approach stuff differently, in a better, smarter way. What baffles me still is the intricacy of Unity - everything can be triggered from plethora of places in a bunch of different ways, and it's becoming a little confusing and unclear which of them is correct in what scenario.
- In numbers, I'd say I gave:
- 5 hours to programming (scripts and behaviours themselves)
- 3+ hours to research and watching tutorials
- 2+ hours to designing and redisigning logic between GameObjects (Should this logic be hardcoded inside the script for this prefab, or can it be generalized for all alike future objects? Should this field be public, private, or private and serialized?)
- ~2 hours of playtesting and fiddling with the variables just to get feel for how things work
- 1+ hour of game designing and placing tiles to make the level as prettaey as possible, although it lacks variability still - I'm not really a level designer. I like to code stuff for level designers and come up with mechanics.
Also, this is definitely coping. I totally spent like double the time doing just the poor level design. At least the Adventurer from several years back was better. I hope.
- Outcome
- Boring level in unfinished game
- Metric fuc*ton of experience and knowledge compared to what I had before.
Files
Game 3.rar 23 MB
Mar 18, 2024
Get Project A
Project A
mff-gdintro-2024-a
More posts
- Journal Entry 1Mar 09, 2022
- Journal Entry 2Mar 09, 2022
Leave a comment
Log in with itch.io to leave a comment.