Nick Pawlowski

Difficult Facelifts

It’s been a while since my last post, but I already posted once without an upload, and didn’t want to do it twice in a row. This last upload has added a difficulty level, which has been sorely lacking, and a couple minor graphical improvements.

– Samurai MiniBoss has a brown robe to match the dialogue picture (and also making him look a little less like Samurai Jack)
– New title screen
– New pause menu
– New View Controls screen (which is now also the Adjust Difficulty screen)
– New Bird animations
– The sake bottle at the top of the screen now bounces a little when you pick one up, and when you drink one
– The water is a little more transparent, to make it easier to see that one rock ledge (you know the one I mean)

Non-Difficulty based changes:
– The mouse now cannot leave the window unless the game is paused. This keeps you from accidentally clicking outside the window when attacking, if you’re not paying attention to where the cursor is when you have a melee weapon
– Fixed a bug wherein if you were standing RIGHT ON TOP of an enemy and using the katana, the attack wouldn’t register
– Made it a smidge easier to jump from some things on to other things
– Bird corpses don’t stick around quite as long now
– Enemies now revert back to walking back and forth when you break line-of-sight
– Enemies also now deal their damage halfway through the attack animation, which looks a little more realistic

Things that changing the difficulty level affects:
– Enemy speed
– Enemy aggro range
– Enemy firing rate
– Enemy damage dealt
– Player damage dealt
– Player invulnerability time after a hit
– Amount of health restored when drinking
– Whether or not checkpoints restore health
– Mini-boss damage
– Mini-boss rolling speed
– Boss damage dealt
– Boss speed-up rate
– # of hits to burn Boss’s armor
– Whether there’s a 2nd guard during Boss fight

The Difficulty Level starts at Normal on a new game, but is saved at checkpoints. I definitely need more testing and feedback to let me know if whatever difficulty level is too hard or too easy, especially at the Boss fight.
I’ve finally finished all the tweaks I’ve been putting off for the Japan level. I need to turn the isometric engine into the first waking level, link the two, and then move on to the second dream level. I’m still trying to decide how much will go online- I don’t want to give the whole game away during development!

Gone to Code

I’m still slowly chipping away at the isometric engine, and I’ve made a couple more changes to the Japan level after watching someone else play. I think I’m going to implement some sort of difficulty setting, which should make the game more fun for everyone, though it will take a lot of work to get it started.
I don’t have any new uploads yet, but I wanted to draw everyone’s attention to this video from, which is a nonprofit group dedicated to trying to bring programming classes to every school in America. I remember discussing with someone once how much differently programmers see the world- I remember distinctly watching my first hockey game, and in the back of my mind I was trying to design an AI behavior that would emulate what the players were doing. While fishing one day, I was looking at the surface of the water, and wondering how I’d go about implementing a 3D Ripple/particle engine in QBASIC.
After all the military uselessness I’ve endured, I feel like I owe it to myself to do something in life that I’ll actually enjoy, and I’ve been working towards becoming a math teacher. I love teaching, training, and explaining, and math fascinates me. In my high school, the programming teachers were always some other sort of teacher primarily, who also had a collateral job with programming, and so I never really thought that I could just BE a programming teacher. I’ve been toying with the idea- for a few months now- about trying to get some sort of basic computer science degree along with my math education degree and teacher licensing, so hopefully I can land myself in a similar position.
To teach programming- wouldn’t that be an amazing sort of experience?
Anyways, this video- it’s a really well-done little PSA-style thing with interviews from a lot of the computer giants- Mark Zuckerberg, Bill Gates, Gabe Newell, etc.

Also, check out some of those offices, man. How incredible would it be to work there?!

In Which Nicholas Learns About Pathfinding

I’ve always been pretty aware of pathfinding. A*, that’s a thing, right? And there’s some Russian dude with an unpronounceable name that starts with D? I’ve never really needed true pathfinding; if I made an AI who needed to get from point A to B, he’d use some sort of “randomly pick left or right” or just “follow the player” sort of method. I have a textbook called AI Game Programming Wisdom, which has never really offered up much wisdom as it has inspiration for ideas. It has multiple chapters on pathfinding, and every single one of them has to do with A*. I recognize A* as being the “best in the field,” but I’ve never really known for sure how it works. I’ve never needed to, really.
But a few days ago, I started working on code that would allow the player to click on a location in the isometric map, and the character would walk there. You know, like all the other old isometric games. Or any point-and-click adventure game. It obviously wasn’t that hard; people had been doing it literally for decades. Except it was. What made it worse was the fact that I’d “homebrewed” my own isometric engine; it didn’t really recognize that you could travel straight north and not deviate east or west- as far as it was concerned, you only went up, down, left, and right. And if you were traveling straight north, you were going up and over to the left, which confused the bejeebus out any sort of click-to-walk code I attempted. I realized after a while that I was going to HAVE to use some sort of pathfinding algorithm.
The textbook I have doesn’t do a very good job explaining A*; it assumes you already know what it is. All the forums for GarageGames (the makers of Torque) kept touting a resource that had been released 6 years ago that added A* functionality, but it didn’t apply to what I’m using right now. The more and more I read, the more I realized that A* was just too complicated for what I wanted to do. Dijkstra’s Algorithm was the precursor to A*, published in 1959 –1959!– and seemed far more suitable to my needs (and isn’t Russian, it turns out). I spent another couple days trying to find a good explanation of it in pseudocode, and it was finally the wikipedia page (of all places) that clicked with me. In not more than a couple of hours, I had a fully-functional click-to-walk code. The only problems is has is if the path it needs to take wanders too far off the screen; the algorithm essentially can’t “see” where he needs to go, and it calls it a null path (that is, a little red click-y target). So far, I can only find one place where that even applies, and you really have to go out of your way to click in the right spot to make it happen. Plus, I feel like that’s a pretty intuitive problem- just get closer to where you want to go first.

The isometric engine aside, I commissioned some artwork for the final boss in the Japan Dream level, so it’s a lot easier to see what’s happening throughout the boss fight now. It looks pretty good, especially just for prototyping graphics, and it’s courtesy of Lucas Onky of Puffergames. I found his portfolio in the TIGForums and he was an absolute pleasure to work with.
I also made it so the mouse can select menu options, since I saw so many playtesters trying to do that. I still need to update the “View Controls” thing to show the spacebar as jump, but aside from that (and graphics, of course) the level is pretty much finished.
The isometric level takes a while to load, but that’s because it’s generating all its geometry information at runtime instead of loading it from a file. Once I have the level design completed, I can save it and then load it whenever I like, cutting the level-loading time down by a huge chunk, but it needs to be done in-game for now. Just bear with me; it’ll get better.

Orthometric / Isographic

After watching someone else play through the main game, I felt compelled to make some more changes:
1) The dialogue that shows up after you (unsuccessfully) hit the Ronin-phase 1 with the katana 5 times wasn’t happening. I fixed that, and changed it so you only have to hit him 3 times, instead of the 5 from before
2) When I changed the way melee weapons worked, I made it so you can effectively make a “pitchfork umbrella,” thus avoiding any damage from the ronin. That’s weird, and it shouldn’t happen, so I fixed it. Meanwhile, “pitchfork umbrella” will be added to the list of amusingly-named bugs I’ve encountered, along with “rocket ladders.”
3) The mini-boss will show that he’s vulnerable during the jump by flashing the notice-me!-color as he flies from wall to wall (maybe the inside of his cloak/wrap thing). But the point that was brought up is that it’ll be the player’s first encounter with the color, and might not know to pay attention to it. So I added a switch to the first guard tower that heads over the bridge; you’ll have to hit the switch to open the door, and the switches will have that color also, helping to reinforce that the color means “hit me with a sword!”
4) Some people weren’t even noticing that the player blinks after he’s been damaged, signifying the short period of time he’s invulnerable after a hit. I tried to change it so he flashes white instead of just on-off, but the best I could get was a weird blending-mode thing with a copy of his sprite that stays in front of him. Because of this, I’m sort of expecting issues with it. When you play, look for animation issues with the player’s sprite!
5) During phase 2 of the ronin fight, if you stay away from the walls, you’ll never see him run into one and stun himself, which means you won’t be aware that there even is such a thing as him being stunned, which means you’ll probably die wondering “Why can’t I hit him with the katana?” I changed the battle so the Ronin just walls from wall to wall, hoping to catch you in his charge. This made it a little easier than I was hoping for, so to compensate, I added another fire-guard, but decreased both of their firing rates. Play through this part a couple times, if you will, and let me know if it’s too unbalanced.
6) I’d been waffling for a while about making the “climb up a ladder” button separate from the “jump” button. I was trying to avoid adding an extra key, but it was pointed out to me that the space bar, or shift, or some other second key just feels more natural. So now the “w” and “up” keys are only for ladders, the spacebar makes you jump.
7) I’ve seen a few people now try to click the menu options, and that’s not something that can be done (not yet, anyways. Maybe someday.) So I hid the mouse cursor any time the menu is up. However, I’ve noticed some weird issues where if the menu comes up because the window lost focus, the mouse cursor doesn’t come back when you resume, and you have to bring the menu back again to make it happen. Still looking in to it.
8) I also spent forever working on a new swirly “I died and now the screen is turning black” bit, instead of just the radial fade-to-black thing that happened before. It needs more frames; it looks a little stuttery, but I guess if I hadn’t said anything, you’d’ve just assumed that it was supposed to look like that and was kind of artsy. I dunno; like all the other graphics in the game, it won’t be sticking around. But this has helped me create a framework so that I can add any animation I want there, instead of relying on black blocks that converged on the player like before.

Also, you’ll see that I’ve updated the “waking” isometric download as well. The layout is complete, the isometric tile-filling function works, and I’m currently in the middle of adding the actual game functions. You can walk into your apartment, but it’s pretty bare right now. The walls turn translucent when you walk in front of them, but not the buildings, and I think I’m going to leave it that way.
Also, some of the buildings have some weird clipping issues where they sometimes show up in front of or behind the player when they’re not supposed to- that’s just laziness on my part. I need to split them up into separate images and control which ones appear on top when. That’s just not at the top of my priority list right now.
I need to make a map function, so you can press a key and see where everything is. I need to start adding little wandering NPCs and a way to talk to them. I need to make it so you can interact with objects, such as your phone, the library, etc.

Torque 2D just released the newest build of their engine, and I find myself unsure as to whether or not I want to convert.
Pros: It comes with built-in isometric support, as opposed to the bastardized thing I had to whip together. It merges animated and static sprites into one easier-to-use class. It also, likely, fixes some of the weird issues I’ve seen with tilemaps and particle effects.
Cons: It’s not backwards compatible with the level editor. In fact, there isn’t a level editor for it, so I’d have to make my own. Not to mention that the perks that come with a merged static/animated sprite means I’d have to go back and recode everything that deals with displaying and animation. Also, it’s still super-new, so there are likely to be little bugs and issues that haven’t been caught yet.
The longer I wait, the more work I’m going to have to go back and redo. But I don’t want to have to spend all my time porting everything over to the new version only to find that it’s really not that much different from what I already have. Not to mention that everything I’ve done with the isometric engine will have to go away, since it supports its own version of that. Really, the only reason this is an issue for me at all is because I’m afraid that the help forums I’ve been relying on will start to go away once everybody makes the change. If I have an issue, I won’t be able to ask about it in the forums, since the first question they’ll ask is “Are you using the newest build?”
I’m still going to think about it for a bit, but I’m honestly leaning more towards just sticking with what I have.

Before I wrap this up, I have a couple links to share. The first one is one of those “Top 6 blahblahblah” articles that Cracked makes- I’m sure you’re all familiar with them. This one is about how video game designers messed with people who downloaded illegal versions of the game. It’s pretty impressive, actually. Read the one about Earthbound!
6 Hilarious Ways Game Designers Are Screwing With Pirates
The second link is a presentation that someone gave during the Game Developer’s Conference in 2011 about depression and game programming. He talks about finding motivation and inspiration, and a lot of his talk focuses on methods to use when you’re just a one-man game studio, which is especially applicable to me.
How To Function As A Depressed, Solo Game Developer

As usual, download and play! I need feedback!

It’s a brand new day, and the sun is high

New website design!
New upload!
New game engine!
I spent 4 1/2 hours the other night designing the top-down waking level, and when I was finally satisfied with it, I clicked save, just like I do any other time. The Torque Game Editor decided, however, that the last 4 1/2 hours of my life were completely unjustified, and it promptly resized the tile map into a 10 x 10 pixel square. And THEN it saved. All my work was lost.
This isn’t the first time that the editor has acted buggy on me. For a while, every time I saved the title level, it would move one of the buttons over to the center of the screen. And sometimes it would try and save the level as a particle effect file, instead of a Torque game level.
That was the last straw, though. I decided that a re-imagining was necessary. The next morning, I sat down and started writing an isometric game engine for the waking portions of the game, like you’d see in the old Fallout games for PC, or Diablo, or XCOM. I’m extremely satisfied with how it’s turning out, and I put a link to the Isometric Test executables on the Download page. The Download PAGE! The little tab up there takes you to a page where I’ll keep the most recent builds of the game for testing. The site design still needs a little work, but it’s better than relying on an incorrectly-named blogspot. The blogspot will redirect here, in case anybody still has bookmarks they need to change.
I also went digging around last night through my old game stuff, and found some really early builds from way back when I was still experimenting with different engines and game design. For amusement’s sake I’ll upload them here, and you can see how far I’ve come.

My first attempt was in Adobe Actionscript, and while it did a great job of introducing me to serious game programming, it just wasn’t what I needed to be able to create the sort of game I intended. It’s still buggy- I seem to remember realizing as I was trying to fix the bugs that the scale of my ideas just wouldn’t fit into something like ActionScript. Attempt 1

My second attempt was more of a test than anything else, and I’m really only including it because I love the cookie sprite I was using as a test character. This was my introduction to Scirra’s Construct, which uses minimal coding and is a very visually-oriented programming style, where you create actions, behaviors, and triggers and attach them to objects. Attempt 2

This is also a Construct program, and you can see that I actually made a lot of progress with it. It still looks very unrefined, and I’m glad I gave up on it when I did, else I probably wouldn’t have done a whole lot of legit programming over the last couple years. Working on this is actually when I started this blog, two-and-a-half years ago. Attempt 3

This is what I spent most of my last deployment working on. I was using Python 2.5 with the Pygame libraries for importing graphics and sound. It was very rough, but then I also didn’t have access to any sort of online forums or searches. All I had was the Pygame documentation and a Python phrasebook, so I’m pretty proud of what I managed to accomplish. You can read about it in the older entries, starting here. In the end, my laptop just gave up the ghost, and again, I’m glad that it did because it forced me to look into other options. By the way, this game is inside a folder; the executable is named ball5.exe, and it won’t work if you change the name. Don’t ask. Attempt 4

You can head over to the Downloads section and see how far I’ve come- it’s pretty amazing. I like that I still have all my old builds; it’ll be amusing to look back on them when I have a fully functioning, distributable game.
That’s still a long ways away, though.

Hey, Beaver, come on

In an effort to avoid making any progress on the “waking” portions, I’ve been scouring the Japan Dream level for issues.  I’ve found that the best way to find things it so watch someone else play, and the list of bugs that I’ve fixed over the past few days has grown immensely:

– The boss no longer turns toward the player on dying- he just shows the “stunned” animation until disappearing
– Checkpoints now leave the last checkpoint’s worth of level behind, so there are no more disappearing enemies when colliding with checkpoint trees
– Occasionally when mounting a ladder, the player would walk towards it, miss the ladder, and then walk endlessly in the same direction.  Instead of saying “mount the ladder when within x pixels of the center” I used “mount the ladder when within x pixels or past the center”
– I decreased the distance to change an enemy from “roving” to “tracking” if you’re behind him, so you can essentially sneak right up on them now, or sneak past if they’re looking away
– When I got rid of mouse aiming with melee weapons, it made it so that if you were standing right next to an enemy but were facing away, you couldn’t turn to face him using the movement keys.  I disabled collisions with the enemy so you can now walk right past them, though you’ll still be stopped when you first contact them to take damage.
– When you hit the phase 2 boss with the pitchfork, it would toss him in the air, changing his animation back into phase 1 until he landed.  All pitchfork use has been disabled with the phase 2 boss now
– The knives that the guard at the very end threw were hard to notice against the background while you’re busy focusing on the boss; I changed the knives to be Knives On Fire using particle effects, and made the guard dude wear a red shirt for gits and shiggles
– When you knock an enemy that wasn’t a seagull into the water, they would pause at first, but then fall down through the water at the normal falling rate, instead of floating down gently like the gulls do.  I simply forgot to change their mode to “drowning” so it was an easy fix
– The miniboss fight was made a little easier- I decreased the window in which he can hurt you, lowered his roll speed, and added a splotch of red to the samurai-getting-hit animation to make it more obvious when you’ve hit him.
– I couldn’t figure out why I’d added a 1 second delay on loading the starting checkpoint, so I removed it.  Then later, I realized that it was because I wasn’t giving enough time for the flames that the dude sets to your house to delete themselves when you reload that checkpoint.  Instead of adding it back in, I set the flames to invisible (which occurs instantaneously) and then deleted them (which takes a second or two for particle effects).
–  Originally, when using melee weapons, you can only damage an enemy if he’s standing in the same direction you’re facing.  However, when I changed it so that you can walk onto enemies, if you’re standing right on top of him, he might be a few pixels to the right when you’re facing left, even though it looks like you should be able to hit him.  I increased the damage area to include the area behind the player, as far as half of his collision radius.
– It looked to be too hard to jump over the boss, both phase 1 and phase 2, so I decreased the speed of phase 2 and decreased his radius for doing damage by a third.
– The fire-knife guard’s projectiles seemed to be timed (accidentally) almost exactly with when the boss is vulnerable, making it hard to get behind him and strike without being hit, so I changed the frequency of thrown knives from 2 seconds to 2.5 seconds
– The door to Emily is loaded both in the second-to-last checkpoint, and the last checkpoint, but was only deleted from the last checkpoint after you kill the boss, meaning that you could never get to Emily.  I added an if statement to only add a door there if there wasn’t already one from the previous checkpoint.
– Whenever you exit the pause menu, it reenables player movement.  If you use the menu during a time when you’re not supposed to be moving, it reenables it anyways, so I made it instead restore the ability to move back to what it was when the menu was brought up.

I’m done saying “I’ve fixed all the bugs.”  I’m pretty sure that there’s simply no such thing as bug-free.  Even if you think about some of the AAA game titles out there, I’m sure you can come up with bugs and glitches that you’ve seen, and they have thousands of people playtesting and adjusting code.  I’m toying with the idea of putting this up on reddit, or Steam Greenlight Concepts just to try and get more people to play around with it.  I don’t like the idea of doing that while still relying so heavily on Braid, Samurai Jack, and Street Fighter, though, so I guess I just need to wait it out.
Anyhow, I’m still counting on you guys to play through and give feedback.  What parts are too hard, what parts are too easy?  What isn’t obvious enough, what sorts of changes do you want?  If you have the ability to record yourself playing, that’d be extremely useful.  I’ll take whatever I can get, guys.