Felix the Cat 2
What’s happening everyone! Thank you so much for joining me back at the center of McLepke-land. Let’s get caught up on the latest shall we?
the latest in junk food
Junk food has been a topic on the blog as of late. This stems from a chain reaction where I finally quit smoking pot every day, and for the first time in my life have become ‘totally sober’. No alcohol or other drugs other than caffeine and sugar.
But, every action has an equal and opposite reaction. Some call it a law of motion, but it may as well also be a law of emotion. A surge in willpower in one direction leads to a give elsewhere. This dynamic led to my weight climbing to the highest it has ever been in the wake of total sobriety.
At the start of May, I decide that I have been off pot for long enough to actually be able to focus on a new area of improvement. I decide to tackle the junk food eating and subsequent weight gain. This leads to the first 6 weeks shown in the table below:
A slow weight loss starts happening, but I can feel how much of a pull junk food really has on me as I try to start limiting my intake. This leads to the 6/16 blog post, where I discuss my history with drug use, and note the many parallels between my abuse of other drugs and my abuse of sugary junk food.
This leads to weeks 7 - 9 in the chart above. During this timeframe, I attempt to completely quit junk food. I want to eradicate it from my life, and so I swing a black and white hammer at the problem.
Unfortunately, this approach doesn’t work very well. I do not succeed at completely quitting junk food, and the end result is that I eat a lot MORE junk food than I had been. This is the downward spiral of trying to quit something, not being able to, binging on the thing you’re trying to quit, not being able to, so on and so forth in a cycle. Before long I lost track of my weight entirely.
This brings us to weeks 10-12, where I have restarted this whole operation with a new mindset. During weeks 10 and 11, I ate no junk food at all. Interestingly though, it wasn’t my goal to go two weeks without eating junk food. I simply said to myself that I was going to go as long as I could.
This was like flipping a switch. The gravity of never eating junk food again dissipated, and likewise so did my junk food eating. During week 12 my two week streak of no junk food ends, and I hit a patch of three days where I am back in my old habits. But, since then, I have started a new streak and am feeling capable.
In summary, I believe I have landed on my new junk food approach. The approach is, don’t break the streak. Build a streak of not eating junk food, and push to make that streak as long as you can. For some reason, this seems to hit a sweet spot with how the junk food rationalization centers of my brain work. Completely banning junk food leads to me eating junk food, but weirdly, so does scheduling junk food to eat. E.g., I will only eat junk food on Sundays is not an approach that has historically worked for me. There’s something about pushing to not break the streak that makes the whole situation more active. It feels like something I am doing rather than something I am omitting.
So that’s where I am at with this. Starting next week, I will restart the weight loss tracker table such that week 1 is in July to coincide with this most-recent attempt and we’ll see what happens from there. Wish me luck.
Yes, amazingly it was limited edition oreos that again got me to end my long streak of no junk food eating. I think I’d prefer the Selena Gomez oreos to these, but they weren’t bad.
small game dev updates
Game dev is still coming along. It is always hard to get myself to sit down and focus on building such a vast project, but just often enough I am able to convince myself to chip away at it. Here’s the addition I have been working on:
What we’re looking at here is the game’s first enemy. The green circle enemy is programmed to move toward the player until it reaches a certain distance. After reaching that distance, it switches into attack mode, where it causes a projectile to materialize on top of the player. These are the black outlines in the video - the projectiles are not animated at all yet. If you look closely, you can also see that the green circle enemy’s facial expression changes when it goes from its moving around pattern into its attack pattern. The animation change is subtle, but the important part is that this underlying programming is working.
While we only have one enemy here, this enemy is being built with the future in mind. The way the code is setup, future enemies are also expected to have different states they can be in, similar to how our enemy here starts out finding the player (tracking state) and then transitions to launching projectiles (attack state). The states a future enemy can have can differ, but the basic structure is in place. Each state is also configured to map to a different animation.
So, while it doesn’t look like much, I do feel good about how well positioned this is to expand into the future. The next steps I have in mind are probably to program the collision detection of the projectile - so that it can actually damage the player instead of just bouncing off. This will probably also include setting up some systems, like player health.
It’s hard to keep working on such a massive project, but if I don’t give up on it, I think it eventually has to turn into a complete game. So here’s to another week of small game dev wins.
felix the cat speedrunning
The library is just about closed. I wouldn’t be surprised if by next week’s blog post I have already gone live and done some preliminary runs on Twitch.
The trickiest thing about the Felix the Cat speedrun is routing the collection of the little Felix heads you pick up during the course of the game. Each level is littered with Felix icons that you can pick up. They aren’t that hidden - imagine Mario picking up gold coins. They are kind of like that - there’s plenty of them all over the place, and they aren’t that hard to get. Each individual one isn’t really that special.
The heads grant Felix powerups. If you collect 10 heads, you get a powerup. If you collect another 5 after that, you’ll get some milk, which lets your powerup last longer. If you get another 5 after that, you’ll get another power up. Another 5 after that is more milk, so on and so forth.
But, when you pickup powerups and milk is very tightly routed if you want to be good at the game. This means that every single head in the game is a new moment for memorization. You either pick it up or you don’t. While the heads are meant to be beneficial to Felix, in a speedrun, some of them are basically new enemies that you have to avoid. Some of them you have to get. Some of them are important in the flexibility they provide. E.g., if a head can be gotten or skipped in the same amount of time, that head is a good candidate for ‘course correction’ - if you have too many heads, skip it, and if you have too few, get it.
One labor-intensive part of the run is remembering how many heads you want to have collected by the end of each of the game’s 23 levels. After level 1, I want to be at 3. After level 2, I want to be at 8. After level 3, I want to be at 19. A further complication is that when a head gives you a powerup is relative to the last time you died. So if I die with 33 heads, the powerups are no longer going to get distributed on multiples of 5. They would now be getting distributed at 38, 43, 48, 53, etc.
Another complicated aspect of Felix the Cat speedrunning is the game’s heavy use of global cycles. For the nonspeedrunners, a global cycle is when some aspect of the game is changing even when it isn’t on screen. For example, lets say you have a platform that is moving in a circular pattern, and you need it to be at the bottom of its pattern to get onto it. The simpler situation would be for this platform to move ‘locally’ - or, when it appears on screen it’s always in the same spot, and then it moves along its circular path while it is on screen.
In Felix, platforms (and many other things) are global, so they start ‘moving’ as soon as the level starts, even if they are all the way at the end of the level. Thinking about our hypothetical circular-moving platform, this means that every small nudge or other imperfection that impedes our progress early in the level is affecting where that platform is along its circular cycle by the time we see it at the end of the level. This results in having to juggle more information in your head as you play.
All in all, Felix is a fun game to speedrun. Make sure to keep your eyes on Twitch if you want to catch the live runs - as mentioned, I anticipate going live at least once before the next blog post.
That’s it for me this week. I hope you all have a great week. I believe in you. I will leave you with this photo of Podo. Enjoy.