12/9/2023
Hi, I'm Finian, and this is my first blogpost! I'm really into like every single artform, and my main passion is gamedev! I learned it in highschool, I'm working on it in college, and I hope to make it a career someday.
I'm very critical on myself, and I am very embarrassed to share any art I make, but I've wanted to make a blog for a little while. I think personal writing is fun. I recently received some advice that making a blog might strengthen my portfolio, so I was like "what the heck" and now here I am.
With that out of the way, this post will be about what I consider my first finished game. I did some stuff in highschool, but that was all in a website called code.org. I worked in Unity in my final year, but I served the role of mentor more than developer.
This game was created for my final project in my ENC1143 class, and shall be called my Multimodal Artifact. The assignment was to share what we'd learned over the year in any form of medium we wished, so I made a game. I've only previously done 2D games and I consider myself acceptable at pixel art, so I made a simple 2D platformer. All of my artwork was done in Aseprite and all code was written in Unity, with Visual Studio.
My intentions going into the game were mainly to let the player interact with the sign pictured above, which is something I've never done before. I also wanted the text on the sign to have a scrollbar. I started with an unanimated player sprite, and I made an incredibly simple ground texture, which I stretched to represent a wall. I coded the player's movement and interaction with the terrain. Once I was satisfied with the player's movement, I created some simple animations for idling, running, and jumping.
I then created a tileset of which I am extremely proud, as I've been struggling with grassy and leafy terrain for years. This is the second tileset I've ever made, and the first to perfectly link with itself.
Once I had my tiles in order, I replaced my gaudy primitive, and created the first area of the game as seen in the first image, albeit with significantly less foliage. I created enough level to comfortably house five signs; about half of the game. Finally I began work on the sign itself. The sign was probably the most important part of the game, as its writing is what I was mainly being graded on. There are nine signs in the game, each containing small pieces of the whole final assignment. I created a sprite for the sign in about 20 minutes, and tackled the text with a scroll view. I watched a very helpful video on how it worked, added my TextMeshPro font asset, and made a sign visual behind it all.
My sign was done, from a visual standpoint. I could finally tackle the code, which I did within two scripts. The first script, "Interactable" would be attached to the sign sprite via a child. The script was actually pretty simple, using OnTriggerEnter and OnTriggerExit in tandem with a circle collider 2D to detect if the player was near enough, and an if statement featuring the UnityEvent Invoke in its body. Invoke calls a function from another script, established in the inspector. In this case, I attached a script to the Canvas which disabled and enabled the sign GameObjects.
I also added to the sign sprite a key icon, again of my own making, to make sure the player definitely knows what to press. It has an animation which activates when the player walks near the sign.
Both the coding and the visuals for the sign are finally finished! My final steps for this game were: 1) finish designing the level 2) add some scenery 3) if I had time, a pause screen and maybe even a start screen
This was a single-level game, and since it was an english assignment that needs to be graded, I figured it ought to be very linear and very non-punishing. There are no enemies and no dying, so the difficulty had to come from platforming. The player can jump exactly three tiles high and seven tiles far. The game features one six tile wide jump and no necessary three tile high jumps. The first area, already completed features very easy one to three tile wide gaps.
The area has the player go from the left of the level to the right, and eventually upwards and back to the left. Within the first zone, it is possible to fall After every new challenge there will be a sign as the player's reward: after the first jump, , two-tile wide jump, series of one-tile wide jumps (pictured above), series of two-tile vertical jumps, and finally after the first four-tile wide jump. There are some punishing jumps in the upper layer of this zone, which cause the player to lose some progress if missed.
Before making any level past the first sign, I added a second tileset. I took my preciously mentioned first ever tileset, which was a greyish castle brick, and changed it to match my current palette. It's not perfect, but any imperfections are so nobody would notice unless they were specifically seeking them out. I added this tileset because I felt continuous jungle would start to get bland, and because I really wanted to get some use out of it. I think it fits in really well.
The second area of my game is a platforming section based off of the loss comic, a suggestion provided to my by my wonderful girlfriend. I think it's a lot of fun to involve others in the gamemaking process, and I think it's fun to work with a specific challenge in mind. I thought of something really fun to do with that idea almost instantly, and got to work.
For those who are unaware, the loss comic is a meme from 2002, which features this character format: I II II I_
I tried loosely to stay within that format, I don't think it tracks very well, but the intention and setup is there.
I wanted my third and final segment to be the most challenging, and I wanted it to be inside of the castle/temple setting, in hopes of making the play subconsciously go "oh, this area is different." Each area of the game has its subtle distinctions, but the distinction here is the least subtle.
The final area features a great deal of wide and high jumps, as well as the first and only head-hitter in the game. In the final set of jumps it is possible to fall back down to the start of the section, and the very last jump isn't very difficult. I think it sucks when you think you're almost done with everything in a game, and you mess up at the very end and have to start all over. I didn't want the player to feel that way, hence the easier last jump.
The level was done! My signs (the part I get graded on) were done! I could have some fun with the rest of the game, not that I didn't have fun with the entire previous process, this final bit was just leisure. I love programming.
I started with controls. I put the controls of the game as well as some arrows to point you the right way on rocks, which would not only fit well in the game's environment, but also served well to fill up empty-feeling areas.
After the rocks, I created some bushes. I considered making hanging vines, but I forgot about it somewhere in the creative process. There's obviously not as many of them as the rocks, but trust me when I say these suckers get some crazy mileage. They're everywhere, rotated for the walls and ceiling, flipped, darkened to appear more in the background, placed somewhat behind rocks. These four bushes were super important to the decoration of this game.
After the bushes, I adjusted the hue, saturation, and light of the tilesets to make them appear as background elements. I created the background of the game as a repeating tile. I am not confident in my ability to create a full artpiece, rather than smaller assets, and my wonderful girlfriend added some pixels which I feel made it look significantly better than my rendition. I hue shifted it, and it works excellently as the game's background.
My initial rendition (black was empty) and the final rendition
The final thing to do was to add a pause menu, which is also something I had extremely limited experience with, but found to be super easy. The code is just about the same as making the signs appear and disappear.
The game was not without its bugs, however. There were two that I wanted to fix: 1) sometimes while walking, the player would randomly get snagged and stop. I believed this to be an issue with the ground's collision 2) sometimes upon landing, the player would fly straight through the floor! I also believed this to be an issue with the ground's collision
I had the ground's collider set to a Tilemap Collider 2D, which is a collider designed specifically for tiles. The way a tilemap collider works is that it assigns a square shaped colllider to every individual tile, and would combine all of those collider together in order to save space if it were more efficient on the system. In my game's case it was not more efficient to combine them. However, combining them is exactly what would fix the first issue, the player snagging on the ground. I added a Composite Collider 2D to the tilemap, and viola! No more snagging. The player would still fall through the ground on occasion, but it happened to me so rarely I figured it would be a nonissue. I added a line of code that would set the player's position to the initial spawn if they went too far beneath the map, as well as the reset button in the pause menu which would do the same.
After these fixes I had my incredibly generous roommate playtest for me. He probably played for about thirty minutes, and he relentlessly fell through the map. It was amazing to me how often he just perfectly fell through the ground. Clearly, this was a bigger issue than I anticipated. Thank goodness for playtesters!
After some research, I realized the composite collider actually created an outline of the tiles, rather than completely filling them with collision. The player would fall through the ground because while falling, their velocity would continually increase. Since the collision of the ground was so slim, the player's high velocity would sometimes cause their collider to be on one side of the ground on one frame, and the other side of the ground on the next, not allowing for any collision to happen. The slim outline of the composite collider was not cutting it. There is a setting on the component, labeled "Use Delaunay Mesh" which, when clicked, converts the collider from an outline to a full mesh.
The orange lines represent the collider
A Delaunay Mesh is a mesh based on Delaunay Triangulation, which is a complicated math term which can be simplified to mean the mesh has the least amount of big system-taxing triangles possible.
My roommate once again playtested for me, this time with no bugs at all. His thirty minute experience turned into a three minute experience. Magical!
There's more I would have liked to do, but my time ran out and I needed to turn the assignment in. I think I would have liked to make a starting screen, and maybe some hanging vines. If I had as much time as I pleased, I would've added walljumping and maybe some destructible decorations to make the player feel more involved.
I think the game was a success. This is my first game I can say I've actually completed, and I feel proud of how far I've come. If I were to do this again, I'd probably study the games "Getting Over It" and "Jump King," as in hindsight these games were fundamentally very similar.
The end! Thank you for reading my silly blogpost! This took way longer than I thought.
new reaction image
That post that's like "stop writing characters who talk like they're trying to get a good grade in therapy" really blew the door wide open for me about how common it's become for a character's emotional intelligence to not be taken into consideration when writing conflict. I remember the first time I went to therapy I had such a hard time even identifying what I was feeling, let alone had the language to explain it to someone else. Of course there are plenty of people who've never been to therapy a day in their life who are in tune to their emotions. But even they would have some trouble expressing themselves sometimes. You have to take into account there are plenty of people who are uncomfortable expressing themselves and people who think they're not allowed to feel certain ways. It also makes for more interesting conflict to have characters with different levels of understanding.
A humble request from Bowser
(Based on the Bowser Revolution graphic from Mario Party DS)
Depression Hotline: 1-630-482-9696
Suicide Hotline: 1-800-784-8433
LifeLine: 1-800-273-8255
Trevor Project: 1-866-488-7386
Sexuality Support: 1-800-246-7743
Eating Disorders Hotline: 1-847-831-3438
Rape and Sexual Assault: 1-800-656-4673
Grief Support: 1-650-321-5272
Runaway: 1-800-843-5200, 1-800-843-5678, 1-800-621-4000
Exhale: After Abortion Hotline/Pro-Voice: 1-866-4394253
Child Abuse: 1-800-422-4453
Samaritans (for any problem): 08457909090 e-mail jo@samaritans.org
Childline (for anyone under 18 with any problem): 08001111
Mind infoline (mental health information): 0300 123 3393 e-mail: info@mind.org.uk
Mind legal advice (for people who need mental-health related legal advice): 0300 466 6463 legal@mind.org.uk
b-eat eating disorder support: 0845 634 14 14 (only open Mon-Fri 10.30am-8.30pm and Saturday 1pm-4.30pm) e-mail: help@b-eat.co.uk
b-eat youthline (for under 25’s with eating disorders): 08456347650 (open Mon-Fri 4.30pm - 8.30pm, Saturday 1pm-4.30pm)
Cruse Bereavement Care: 08444779400 e-mail: helpline@cruse.org.uk
Frank (information and advice on drugs): 0800776600
Drinkline: 0800 9178282
Rape Crisis England & Wales: 0808 802 9999 1(open 2 - 2.30pm 7 - 9.30pm) e-mail info@rapecrisis.org.uk
Rape Crisis Scotland: 08088 01 03 02 every day, 6pm to midnight
India Self Harm Hotline: 00 08001006614
India Suicide Helpline: 022-27546669
Kids Help Phone (Canada): 1-800-668-6868
Argentina: 54-0223-493-0430
Australia: 13-11-14
Austria: 01-713-3374
Barbados: 429-9999
Belgium: 106
Botswana: 391-1270
Brazil: 21-233-9191
China: 852-2382-0000
(Hong Kong: 2389-2222)
Costa Rica: 606-253-5439
Croatia: 01-4833-888
Cyprus: 357-77-77-72-67
Czech Republic: 222-580-697, 476-701-908
Denmark: 70-201-201
Egypt: 762-1602
Estonia: 6-558-088
Finland: 040-5032199
France: 01-45-39-4000
Germany: 0800-181-0721
Greece: 1018
Guatemala: 502-234-1239
Holland: 0900-0767
Honduras: 504-237-3623
Hungary: 06-80-820-111
Iceland: 44-0-8457-90-90-90
Israel: 09-8892333
Italy: 06-705-4444
Japan: 3-5286-9090
Latvia: 6722-2922, 2772-2292
Malaysia: 03-756-8144
(Singapore: 1-800-221-4444)
Mexico: 525-510-2550
Netherlands: 0900-0767
New Zealand: 4-473-9739
New Guinea: 675-326-0011
Nicaragua: 505-268-6171
Norway: 47-815-33-300
Philippines: 02-896-9191
Poland: 52-70-000
Portugal: 239-72-10-10
Russia: 8-20-222-82-10
Spain: 91-459-00-50
South Africa: 0861-322-322
South Korea: 2-715-8600
Sweden: 031-711-2400
Switzerland: 143
Taiwan: 0800-788-995
Thailand: 02-249-9977
Trinidad and Tobago: 868-645-2800
Ukraine: 0487-327715
(Source)
He’s sleepy
That’s Louis Rossman, a repair technician and YouTuber, who went viral recently for railing against Apple. Apple purposely charges a lot for repairs and you either have to pay up or buy a new device. That’s because Apple withholds necessary tools and information from outside repair shops. And to think, we were just so close to change.
Follow @the-future-now
three
(He/Him, 18) I will almost never post here but when I do it'll be somethin I guess
253 posts