Categories
Uncategorized

2021, What Was That?

I feel like 2021 came in after 2020’s shitshow and went, “Hold my beer.” It started off alright, with everything open, very few covid cases… Then halfway through the year, the world just went “Psyche!” and everything just went to shit again. Melbourne hit the record as the most locked-down city in the world, much to the detriment of everyone’s mental health. Vaccines just was a whole other situation that needed to be solved quicker than it was, and we finished the year with Omicron coming in and spreading like wildfire. Now testing queues are stretching for blocks, tens of thousands of cases a day, and RATs are non-existent.

So, how did I go achieving my goals for the year? Let’s check off the list.

  • Get a job βœ…
    • Short answer, yes. Long answer, I got myself a part-time job after the lockdown to boost income and start building up for moving out. Unfortunately, it’s not what I’d hoped for, in terms of wanting a full-time job.
  • Screw my head on straight 🟑
    • This was a bad goal in hindsight. This was never going to get instantly good; it was always going to be a process. But, aside from a month of barely managing to keep myself going, I like to think I’m improving. I’m developing processes to help manage my brain and my life better.
  • Pay off at least 50% of my HECS debt ❌
    • This relied on me getting a job fairly early in the year, although I also ran into a change of plans. Unfortunately, paying off my HECS has dropped wayyyy down the priority tree, and moving out has gone up. More on that later.
  • Bowl 300 ❌
    • Sadly, did not happen. Disappointingly, in the time I had, I never really achieved quite the same level of performance coming back at the start of this year, compared to before 2020. However, after 2021’s lockdown, I really felt like I picked back up, and I’m going into 2022 with high hopes.
  • Increase my bowling pace (cricket) 🟑
    • Another pretty bad goal in the end. I feel like I’ve maybe improved my speed marginally, but I’ve really improved on my consistency and my ability to tie down the batsmen. Overall, my cricket is actually improving fairly rapidly on all fronts, and I’m thoroughly enjoying the game again, after a disappointing 20/21 season.
  • Complete my Breakout Urban Android game ❌
    • Ugh, this is this close to being thrown in the ‘I don’t care any more’ pile. It’s probably going to just be one of those projects that never gets completed. It sucks, but so does solo game dev.
  • Participate in at least 3 game jams ❌
    • Man, I kinda let myself down on this one. I can’t remember what stopped me from doing the April Ludum Dare, but October was a bad month for me so I didn’t do the LD jam then. I did do the GGJ though, at the start of the year, even if I didn’t quite finish the game on my own.

Not a great list, if I’m being honest with myself. Let’s see if I can come up with a decent list of goals for 2022:

  • Move out
    • This is my big one for this year. Because of certain circumstances, I’ve developed a strong desire to move out and support myself. I’m already more or less managing myself in my parents’ house, but I’m not comfortable there any more. My general plan for this is to build up my hours with my current part-time job, maybe pick up another/different one, and eventually land a full-time job. I hope to achieve full-time by the end of June, which will give me enough money to safely move out and not worry too much over my budget. Also rent is expensive, I hate this.
  • Bowl 300
    • This is the everlasting goal, at least until I reach it. I’ll be bowling one time fewer each week than I have in the past, but I’m more than capable of bowling 300 now. It’s a case of fine-tuning, practising, and knowing what to change, when.
  • Get into the 1s, based on my performance
    • This is my cricket goal for the year. My game is improving everywhere, and I’m really starting to feel comfortable with what I can do. I do hope I get to play a bit higher up the order sometime, and take the chance at being a number 7 or 8 batsman. But my main asset is my bowling, and it’s improving consistently. Now, I specifically mention being picked based on performance because I actually had the opportunity towards the end of last year, which I rejected based on having only just gotten into the 2s, and the fact that it was a lot to do with the fact I trained twice a week. I want to prove myself in the 2s, so I can say I’m ready for trying the 1s when I get called up.
  • Create a game a month
    • My career goal, I want to redevelop my game dev skills, having not exercised them in about 7(?) months now. I want something to show on my portfolio; not necessarily full games, just the fact that I’m out there making stuff, publishing them to itch.io. These games won’t individually go on my portfolio, they won’t be worth that kind of coverage, but the idea is to show off this process as a learning experience, where I try new things and practice my craft.

I’m keeping this list of goals shorter than last year, trying to avoid bad goals, and also noting that these goals have lots of process and smaller goals involved in achieving them.

That’s all from me for now, I hope everyone had a happy new year, or as happy as it could be with everything. Let’s just hope this is truly 2022, and not ‘2020 too’.

Take care, y’all!

Categories
Uncategorized

I’ve been programming. Sometimes.

Been a while since I posted here. To be honest, life has been simultaneously slow and fast. A lot has happened, but also nothing has happened. Time has flown, mental health is up and down, and a consistent lack of motivation has prevailed so far this year. But lately I’ve picked up a couple projects here and there and I figure I may as well share some of my progress.

Global Game Jam 2021

So I ended up participating in GGJ21 as I’d intended, but I never got a team. I ran it solo and gave it the best I could muster. Problem was, it went over a weekend in summer, i.e. I was playing cricket on the Saturday. This made it particularly challenging, and I had to try and work around and through that to make the game.

With the theme of ‘Lost & Found’, the game I had in mind was a narrative-focused 2D dungeon-crawler, where the protagonist had their heart stolen by their partner and they had to work through waves of enemies to reclaim their heart, and the love of their life. Unfortunately my plan wasn’t super fleshed out, and the time struggles made it difficult to get the game to fruition.

I spent a while on the art, drawing mostly on my Surface fairly simple pixel art. I don’t claim to be an artist, and never will, so that was tough and I couldn’t really get it working. It might have worked better if I had more appropriate tools than just Gimp, but for an amateur like me it sufficed.

I guess the art had its own little quirkiness to it.

I didn’t have a good implementation of my idea, the mechanics were shoddy at best, the art was meh, and my perfectionism meant I spent longer than I needed to on some things. The one thing I kinda got right was the text, and maybe it would’ve been a promising jam game if I had a more solid foundation for the game and its mechanics.

If you do feel like checking it out though, it’s on my itch page.

Breakout Urban Android port

Earlier in the year, I picked this up because I really wanted to get back into game dev and finish this project once and for all. I was finding myself with time and opportunities to work on something and inspiration for this game hit me.

I set up an Asana kanban board to track my ideas and tasks, and organised private playtesting through the Google Play Store, so my friends and I could download and get updates easily. The Asana board filled up with plenty of ideas and bugs, and I made steady progress for a while.

The main goal was to make everything run more efficiently and streamline the UX and game experience, since it didn’t have a lot of good interactions. Using the Play Store, I was able to test fairly easily on a few of my devices and I found that it struggled a little on my old Samsung S4, so I figured I should work on optimisations too. I want the game to run smoothly on as many Android devices as possible.

Unfortunately, I’ve fallen off that track and haven’t worked on the game in a few months. However, with the task tracking I won’t have to worry about remembering what I want to do the next time I pick it up. I intend to finish this one day, even if it ultimately doesn’t achieve much.

Mini weather station

I was scrolling through Reddit and I came across a link to an article with things you can do with a Raspberry Pi. With a spare Pi Zero and a 16×2 dot matrix screen lying around, I decided I wanted to do something with that. In the end I decided to make a little weather station. Just something that gave basic details of the current weather plus forecast details (don’t tell past me that I can only barely fit just temps in).

Hardware
How cool does this look though?
(source, retrieved 27/9/2021)

The weather station they showed off was a full graphical one on a 320×280 screen, so the library was useless to me. So I went researching for weather APIs that I could hijack and get the data from, as well as a library to work with my LCD. Fortunately both were fairly easy, although the first weather API I found was actually just a server hosting data accrued from other people’s weather stations…. That hasn’t been updated in 3 years.

I soldered up the screen directly to the Pi, taking a lot longer than I’d like to admit. I made plenty of adjustments to the wiring afterwards too, including shortening some lengths, as well as later powering the LCD backlight off a dedicated GPIO pin so I could turn it on and off.

Power wiring for dot matrix screen.
After the power wires were soldered.

The API I chose was OpenWeatherMap and would provide me with the most relevant weather data according to my GPS coordinates in JSON form. I used Google Maps to determine them, and then I added in other parameters including the API key, units, and the actual URL to retrieve the data from. After a quick search on parsing JSON data in Python, I set up a simple while 1 loop and set it to retrieve the data, get the current temp and forecast min/max temps, and update the screen every 5 minutes.

I wanted to set up the station permanently in my room, so I could always easily get the temps, but the LCD backlight was bright and would’ve kept me up all night. I noticed the initialisation method for the LCD gave a backlight pin as a parameter, but I’d set up my backlight to be powered off the same 5v line as the rest of the screen. So I moved it over to GPIO pin 4, as set in the code, and tested that it did in fact power the backlight. This is where I learnt GPIO pins can be used as a 3.3v output for things. I tested the code to turn the backlight off and it worked wonders.

The next issue I faced was getting a momentary button to work. I looked it up, but I never understood what exactly I needed to do to make it work. Then I changed the pin I was looking on for input, and set it up the most basic way. Just 3.3v connected to one leg, and an output wire connected to a leg on the other side of the button going to GPIO pin 27. I enabled the in-built pull-down resistor on the Pi so it read low while no voltage went through.

Using a push button with Raspberry Pi GPIO | Raspberry Pi HQ
I saw many diagrams like this and genuinely could not wrap my head around it.
Yes, I’m dumb.
(source, retrieved 27/9/2021)

A change to the code was necessary so it could register the button press while it was sleeping between data retrievals. I ended up just implementing basic game engine logic, with a Start method and an Update loop, and then just counting down the time to wait by calculating the delta time from the last loop. I then set up the button to enable the backlight for 10 seconds, before it turns itself off again, enough time to read the screen.

Then came the next challenge. I told my friends about this project and they complained it wasn’t BOM data, to which I responded with, “BOM doesn’t have an API for the public to use”. The actual truth though, I had just never looked. So I investigated, and quite easily found the access to the data. They provided a lot of it in various different formats, but the thing that still irks me: recently observed weather data is available in JSON format through HTTP. Forecast data on the other hand… how about an XML that I have to download through FTP? That’s not really stupidly annoying, noooooo….

Seriously, who thought this was a good idea?
(source, retrieved 27/9/2021)

So back to the googling on how to access FTP, download data from a file to RAM, and then also parse the data that’s presented in XML format. It took me a couple tries, but using some in-built Python libraries and some string trickery I pulled it off. It was a pain in my ass, but I’m glad I did that, because now I get the data from the probably most reliable source in the country.

But I wasn’t done yet. I figured I wanted to see the temp in my room. So I bought a temp sensor module (DS18B20) that was already set up with the pull-up resistor and plugged it in, setting up the Pi’s One Wire functionality on GPIO pin 5 (since the default, 4, is being used for the backlight). Little did I know that the module board swapped the Vdd and data pins, at least until I looked at the data sheet from the website I bought it from. Once I cleared that up though, it worked a treat. It’s scary how much my PC heats my room. 7 degrees outside, 23 inside… Also I can see just how ineffective our central heating is for my room and now I hate it even more.

And finally I finished the project… or did I???

Weather station v2

Soooo… I’m not actually done with the idea of a weather station yet. I’ve got my eyes set on a graphical interface for the weather station, much like the one shown earlier. I’ve already gotten myself a 2.8″ touchscreen that will connect via SPI to a Pi, and I’m currently waiting on a Pi Zero W to arrive so I can get started.

Now, because I want to use the data that I’m already retrieving from the BOM, I’m pretty sure I need to set up the program myself. This will make it a decent challenge, but I’m up for it. Based on my research, I can’t use accelerated graphics, like OpenGL, through SPI. So, the plan is to use Pygame to run the display: since it uses non-accelerated graphics, it should be able to push graphics through SPI.

Ludum Dare 49?

This one, I’m not so sure on. I said at the start of the year I’d do at least 3 game jams, but I’m sitting here having still only done one. I’m honestly thinking I may look at the theme and do something, but not actually submit anything. Take some time to just make a game, and not push myself when I’m clearly not talented enough for things like art and design. Hopefully I’ll be able to partake in a game jam with a team again soon.

That’s it…

That’s all for now, I haven’t done anything else really. Now I’m just doing what I can do while away time until lockdown finally lifts and I can get back to things like bowling and cricket.

Until next time, whenever that is, take care and get vaccinated y’all!

Categories
Uncategorized

2021 – New Year, New Me (Again?)

It’s the same story every year, isn’t it? We all make mistakes, decide we need to make positive changes, or just want to do something different, leading to new year resolutions. The saying “new year, new me” is a little (ok very) clichΓ©, and like a lot of people say that but don’t end up changing much, if at all. 2020 proved to be a challenging year for all and most of us managed to have more than just lockdown to worry about, myself included. Now, 2021 is upon us, and it is a frightening new world we live in.

I’ve had a lot to think about, and now I need to make some goals for this year. I have goals for the decade that I set at the end of 2019, but I don’t have much in the way of short-term goals. So this list is here, more as a way to keep myself accountable than anything, but also to prove to myself that I am capable of recovering and moving forward.

  • Get a job
    • Pretty obvious for this one. I’m fresh out of uni and I need a job. Hopefully I get one as a game dev, but we’ll have to see how things pan out.
  • Screw my head on straight
    • The last few months have been tumultuous for me. I’ve had very mild anxiety and depression for some years now, not enough to have needed any help, but enough to be occasionally noticed. However lately, it’s been worse. Way worse. I’ve had so much consume my mind in the last few months that I started slipping and losing control of my own thoughts. For a while there, I even believed I could get it under control on my own. Turns out I needed a more… distressing and final incident to learn how deep this went. So I’ve organised a psych to see what I can do to improve my situation and I want to get to the end of the year saying that I am in control.
  • Pay off at least 50% of my HECS debt
    • This one is self-explanatory, and relies on getting a job. But I want this debt out of my hair ASAP. I have the luxury of being able to do that, with very few costs to otherwise worry about, so I feel this is very achievable. Ideally I’d pay off all of it, but we’ll have to wait and see…
  • Bowl 300
    • Easy enough, right? Of course, this will depend on if the pandemic causes another lockdown here, but I’m hopeful that this year I’ll be able to bowl almost as much as I used to, giving myself ample opportunity to achieve that golden score.
  • Increase my bowling pace (cricket)
    • I want to become a better bowler, so to do that, I need to improve various facets. I feel increasing my pace will play a good part in improving my wicket-taking ability, cause I always seem to get hit around due to my slower pace right now.
  • Complete my Breakout Urban Android game
    • It’s been nearly a year since I picked it up and then dropped it. I bought the Play Store developer thingy and I still haven’t finished the game. I need to actually do something about it so it gets done and on the store.
  • Participate in at least 3 game jams
    • Unless I get myself a job that satisfies my cravings to make games, I’m thinking 3 is a good number. GGJ this month is a definite contender to be partaken in, I just need to get a team together. Then it’ll probably be the 2 LD jams in April and October? We’ll have to wait and see.

7 goals ain’t bad. All of them achievable this year, too. Woo! Go me!

*Secret goal achieved: Set goals for 2021*

Seriously though, I’m happy with this list. Each goal may have smaller goals to help achieve the larger goals, but I won’t list that here. Anyway, that’s all from me for now, hope y’all had a safe and happy transition to 2020 pt. 2 2021. Make sure you have your own goals for the year, too. Finally, let’s make 2021 the year where the pandemic is beat!

Categories
Uncategorized

Too early year review – 2020

Yes, it’s early November. There’s also nothing really left for me this year, save for trying to re-integrate into society. Uni is done. Forever. So now’s as good a time as any for me to reflect on what 2020 was, and what it could’ve been.

First of all, fuck you COVID-19. I had so many hopes and dreams for this year and instead all I got was anxiety and loneliness.

I had planned to bowl my first 300 this year. I normally bowl 3 times every week, 3 games each time. I’d also bowl in the odd tournament or 5 to test my skills and try and come out with a little cash. This year, I can count on my 2 hands how many times I went bowling. 8 times. Like seriously, what the hell, world?

The main things that annoy me though is the lack of options I’ve had to try and connect with the local game industry, and the missed opportunity to make new friends and become better friends with existing ones. Coming out of the harshest lockdown in the world means I have to readjust to socialising (something I was already not great at) and somehow regain the energy to go out and do things.

Uni’s been interesting, to say the least. Not going to any classes or lectures, everything handled online, some units doing it more successfully than others… It’s fair to say it’s been a clusterfuck of a time, especially trying to do a capstone project. I don’t know how we managed it, but we pulled through in the end. We made a game, and I also completed all my other units without too much trouble in the end. Trying to do group work without being able to meet in person is stupidly hard though.

I am eternally grateful for my software engineering team for being the absolute best human beings/teammates possible. Y’all made my capstone experience just that little bit better!

Goals

I made a huge thread on twitter last year, reflecting on the 2010’s and setting some goals for this decade. Fair to say I haven’t had a chance to really achieve most of them.

My goals for the 2020s
My goals for the 2020s

Looking back on them, let’s see how I’m tracking:

  • Move out
    • Not even close. Wasn’t gonna happen for a while anyway, so not worried.
  • Learn more on UI/UX and programming
    • Yeah, I did learn a bit about all of the above. Once I’ve had a break, I’ll look into doing more for this though. Gotta keep learning!
  • Complete my degree
    • Yep. Done this. Unless I somehow fail one of my units, in which case… yikes!!
  • Get a job
    • Never planned on having one this year, and I honestly need a break before I try finding one.
  • Work as a programmer and/or UI designer in games
    • Kinda ties in with above
  • Continually work on becoming more empathetic and personable
    • Really hard to do when I’m not seeing people. Really want to though, and need the support of my friends to help I think.
  • Bowl my first 300
    • Didn’t have many chances this year
  • Win a bowling tournament
    • Never had one on to attend this year
  • Partner with a manufacturer and bowl in more bowling tournaments
    • Was never happening this year anyway, and quite a stretch to ever happen at all
  • Get my first 5fa
    • Haven’t started the next cricket season yet, maybe over the coming summer?
  • Get my first hattrick
    • As above
  • Play in the 2s, then in the 1s
    • As above, again
  • Find a partner
    • Never had the chance to get a partner.

2/13. Probably. No real guarantees I actually complete my degree this year haha! But, if I keep up 2 goals per year, I might have most of the things I want.

One final thing. I’m going to start seeing someone to help me through the mess that is my mind. This year took a huge toll on me, as it has many, many others, and after having one-too-many meltdowns, I’m gonna see what I can do to manage that.

Well, that’s it I guess. Not much else to say. I think I might do a game jam in December sometime (friends permitting, screw doing a solo jam!), so I’ll probably post again then, or whenever something else newsworthy pops up.

Have fun y’all. Those heading into a new lockdown elsewhere around the world, please take care of yourselves, physically and mentally! The rest of us in Melbourne, let’s do our best to reopen safely and responsibly!

Categories
Uncategorized

Netcode – A personal review

“I didn’t expect this to work, but I had hope.”

That’s effectively been our motto for netcode. Any time we tried a different solution to fix a problem and it proceeded to fail, this was what we would say. Every so often, though, our solutions worked and we’d either rejoice that that’s over and done with, or cry in pain when we worked out it was deceptively simple.

We’d put most of our development time into the netcode, blocking out a good 5+ weeks to get main functionality working. We worked hard, came across many issues and tried to learn as much as we could to ensure development went as smoothly as possible. Progress was consistent; we managed to go quite a while without falling too far behind our goals. But ultimately, even with all the documentation, all of the examples, and the many forum posts, no one has ever done net code for our game.

We have unique mechanics, such as phasing through walls, turning invisible while moving, and possessing objects to gain their powers and abilities. As far as my understanding goes, no one has made a game quite like that and frankly, if they had, their solutions for implementation was probably vastly different to ours. So, for a bunch of otherwise quite competent engineers, we were always in for a bumpy ride. We knew from the outset it wouldn’t be easy and we were willing to hedge our bets on getting online play working. The whole team backed us in, everyone knowing the consequences if we did ultimately fail.

Fast forward to now. We have been working on a bug for nearly 2 weeks now. It’s been blocking development. Players’ movement as a weapon doesn’t sync between the rest of the clients. We try literally everything we can think of. Nothing. Endless Google searches. Nada. Then, I had one final glimmer of hope. We had a very similar issue with the ghosts earlier on. I plugged in the same solution as what we used for the ghosts.

This was one of those moments where I was sure it would work. I had full confidence that we would have this fixed and we could move on. One of those rare moments where we said:

“I expect this to work”

It didn’t. At this point, we’d exhausted all of our options and spending more time to determine another possible solution was impractical. 2 weeks on a single issue was already too long and our morale was right down. We had no energy left to keep working on it. We decided to call it off there and then.

Overall, I’m disappointed we didn’t get it working. I felt like we had a point to prove when some people suggested it may be too difficult. If we didn’t have lockdown, we would never have considered online play. Probably. But we felt it necessary to help facilitate playtests during Stage 4 restrictions. Things were going pretty well and to fall off on just 1 bug… it’s annoying. That’s why we aren’t committing to giving up on netcode. The branch will be there and, if we feel so inclined and have the free time, we can go back and try another thing or 2.

For now though, it’s back to focusing on the rest of the game. I don’t know if we’ll ever try netcode again for this project, and I don’t think I’ll ever want to try again on any project again after this. I have a new-found respect for network engineers, as there is far more to it than I had anticipated.

Categories
Uncategorized

Hello world!

Well I guess this is a thing now.

I didn’t think I’d ever start a blog and honestly, I have no idea how long I’ll keep this up. I guess you could call this an “iso hobby”, one of a few that has piled up. At least I did something about this one.

Look. Installing WordPress on my NAS was one of the more annoying things I had to deal with, but that’s no fault of WordPress. All I wanted to do was download the WordPress package and install it, but nooooo that was too easy, can’t have that! To spare the boring details, I had to manually download, extract and set up the database for this.

Now it works, but it looks like trash. I have a long journey ahead of me as I learn how to navigate this, so I can eventually make it look like the rest of my website (if you haven’t checked it out, you should click here).

Life has been… interesting to say the least. I’ve had the great joy of adding netcode to my capstone game, Purgatory Punch-On, and it has caused more than a few headaches. Like I have the full help and support of the rest of the engineers in the team but we manage to find a lot of brick walls. That’s currently our favourite analogy of what’s happening, with many potential solutions also bearing the tagline, “I didn’t expect this to work, but I had hope”.

Motivation has gone downhill thanks to netcode, like it wasn’t already low enough. I’m getting things done, but it’s mostly due to the help of deadlines. I’m taking a couple other units that require plenty of writing, one of which I despise and kinda wished I never had to do it. The other, I would normally be enthralled in; it’s called User-Centred Design and Evaluation and it’s run by Steve, probably one of my favourite tutors. I gained a small ember of passion for usability over the course of developing Get the Fog Out last year, so I was looking forward to this unit, until COVID-19 kinda came and kicked everyone up the ass. Now it’s just another thing that I need to do to get through the year in one piece.

I’ve kinda run out of things to say, so I guess that’s it for this post? How the hell do you end a blog post?

This is weird…