A FIRST HAND EXPERIENCE BY ANDY DEVANAPALLY
The following is by Andy Devanapally and the work he has been doing on Fat Loot.
A quick post on most of the things I’ve worked on with the Fat Loot team. I don’t have much in the way with words, so bear with me please ^_^. I’ve been working on mechanics related to character movement since the team started work on the game this semester. For the first week or two, I spent time going through general Unrealscript language basics and techniques. It was a slow, draggy start. The real fun began once I got to focus on my specific work for the game.
- -
The first area I focused on was character sprinting. It turns out that the guards had trained well in chasing down ninjas, and our lady needed more than just her usual walking speed to evade them. It was a simple concept to start with: hold down a button and move to sprint, release button to return to normal movement. Though I know better now, it seemed somewhat complex to me at the time, with the regenerating energy posing an obstacle, especially considering the fact that the sprint- button could be held down even when the character wasn’t moving, and the energy would continue to regenerate. Regardless, Unrealscript is a fun language (and really easy, once you to get a hang of the basics) and I finished the sprinting mechanism in good time. Our lady shot across the map… like a ninja?
- -
The next task I worked on was a new camera implementation for the game, one where the player and camera could move independently of each other (like in Prince of Persia, GTA, etc). It was initially a little demotivating, because I didn’t even know where to start. At the time, I was still an Unrealscript noob. All I’d done so far was mess with the basic classes (Pawn, Controller, etc) and had never really ventured into creating a new class myself. After some work, the new camera class was born. I’ll hold for applause. After about a day’s research, I was actually enjoying how the Unrealscript camera was programmed (at least the basics), and was well on my way to getting the new camera working. With another day’s worth of work, the new action camera was all set.
[Quick pause to let everyone know that I keep uploading my work with Fat Loot to my YouTube playlist at http://bit.ly/GUfy3swhenever I find the time]
I had the new camera working at that point. I also had to mess with how the playerController handled movement input to get it working perfectly.
- -
The next thing I worked on was also camera-related: seeing through objects that block the view of the character, such as walls. This was needed since the designers thought the camera was better at a fixed distance from the character. I don’t think I’d implemented this in the best manner possible. What I did essentially was:
1) A ray trace from the camera to the character,
2) Find any object in the way, and pass its reference to a global array
3) Make every object in this array transparent for a duration longer than the frame-period.
This meant every object blocking the view would be rendered transparent at each frame, and the transparency lasted just over the duration of the frame-gap. If an object still blocked the view for longer than the frame-period, it would simply refresh its transparency at the start of next frame, and so on, seamlessly. Anyhow, like I said, this was somewhat a ‘hacky’ way to get it working. Good news however was we didn’t need all this with my re-implementation of the camera, as the team later decided to simply move the camera closer to the character whenever an object came in the way.
- -
I worked with Xu (who has also been working on character-specific mechanics from the start) for a while to improve the belly bump usage. One fine morning, I discovered the Unrealscript TakeDamage function and suddenly, everyone started to love using the belly bump :D. It was pretty fun, though no one probably even notices it anymore… :( I then worked on making the victim get stunned on being belly bumped into a wall. The designers decided there wasn’t enough punishment for someone who’d gotten belly bumped, so voila! I worked on the core logic then. Xu has done a much better job of it now, after we improved the states in the playerController.
- -
I then started work on designing the existing playerController states with Xu and Thomas. We were cleaning up unnecessary code in the Pawn class along with other work that doesn’t need mention here. For a while after the basic character finite-state machine was set up, I worked on making the player increase/decrease speed gradually (i.e. acceleration/deceleration) rather than the sudden switches she made in her speed previously. Once that was done, I returned to the playerController states, where I’m currently working on all the Invisibility, Disguise, and Treasure-carrying related states. It’s taking some time: handling all the possible transitions and possible cases, but knowing that the code will run much more efficiently after this provides good motivation.
- -
Behind everyone’s back, I’ve been secretly plotting on my evil personal project: implementing a variety of different cameras. I’ve been working on an over-the-shoulder view where the camera smoothly glides in and out while sprinting and changing the FOV simultaneously to give it a very action Gears-of-War-esque feel. I’ve started work on a top view camera mode as well, which Pat (our lead designer) suggested would be of great use for a spectator mode. I’m also working on a first-person camera mode, though I’ll have to discuss with the designers as to where in-game we can use it.
I’m at a very unconvinced spot about these cameras right now: confident and excited to show the team my (so far, hidden) work, yet slightly concerned about bugs that might pop up, killing all the fun. XD I’m taking my time on that one, going slowly but surely towards some pretty kickass camera modes.
–
With all that said and done, the most important thing I came to this course for was to learn, and that I have definitely been doing. Learn Unrealscript programming? No doubt. I’m now confident to take on any sort of character mechanics. Learn to work well with a team with separate sub-teams? Sure. The Fat Loot team has pretty much a flat structure, but I don’t think that makes the effort needed for team communication significantly less. I’ve also enjoyed our game nights (at least those times when I’m not bogged down with other work). I definitely feel like I’ve made the most of my time working on the game (yet), and I’m looking forward to see where the game ends up in the next few weeks.
Cheers.













