Cool Stuff!, Game Dev Adventures!, Helping Hand

Game Projects I: Week 11 — Game Developer Conference (GDC)

GDC was amazing. This was my first time going and I’m so glad I went! I would have loved to be there for more of it, but family business took me away for two days in the middle of it. However I got to listen to some amazing talks. The Friday before GDC I actually pulled out my Mathematics for 3D game programming and Computer Graphics by Eric Lengyel and read throught chapter 2. I’d been avoiding linear algebra stuff since most of it didn’t fall into my area of math expertise and I remember some parts of the class being very overwhelming even though I did get an “A.” However, when I got to the part in chapter 2 about Vector Spaces I knew I wasn’t in the same place I was as a freshman in college. Vector Spaces are just special groups. It was group theory! I’d taken Modern Algebra my senior year (study of groups) and I’d never had a reason to look up my linear algebra theory until then. It made so much more sense. It’s funny what sometimes how new knowledge makes once difficult things simple. After taking modern algebra and lots of time for my to think on the idea, Vector Spaces got a new slot in my brain.

Well Monday morning of GDC I was looking forward to a day of math tutorials. I knew my friend Skip would be there. While I was riding the escalator up to the room I took a look at the day’s speakers. First up, Eric Lengyel on grassman algebra. No way! I was just reading his book! It was so cool to get to hear a talk by someone who’s book I was readig. Eric’s talk was by far my favorite and I can’t wait to implement the grassman algebra he showed us into my game engine.

There was one other talk during GDC that I loved. It was the post-mortem on the Human AI for The Last of Us. It made me feel so much better about all the crazy meshes and ray casts I was doing and thinking about doing for the projections (previously known as ghosts) in Ragwheel. It made me feel like it was doable as well and that I was on the right track, so to speak, to making the projections a reality.

I had a hard time at the career fair my first day there. I ended up just going to a couple talks instead. Then I went to my school’s booth. I’m so glad I volunteered to work there! It helped me break out of my shell and start talking to people. It was fun being on the other side of it and I understood both sides. It got me really excited to go to the career fair the next day and talk to some people!

The career fair was awesome in that I wasn’t looking for a job from there, just feedback on my resume. After breaking myself to talking to people again the day before, I was able to get some excellent advice on my resume.

Advice for people going to GDC: take some printed copies of your resume and ask people to give you feedback. The very least you’ll get some good advice on what to make better, the most they may LOVE your resume and you could get an interview! I didn’t stop by anywhere that I was sold on working for, and most places weren’t looking for interns or weren’t taking resumes, but I got what I wanted. It gave me what I needed to improve myself as well as a game engineer. It gave me more focus and I got to learn about some companies and whether or not I actually wanted to be there.

Also, if you have the opportunity and you’re a bit shy, like myself, and just need a kick start to talk to people, then volunteer at a booth. It will really help you see the otherside and help give you the confidence to go talk to other people. Getting a wingman to go with you is always helpful to. I chose to go by myself so that I wouldn’t chat with my friends and possibly miss opportunities. This also allowed me to meet some cool people in line while we waited. However the wingman thing isn’t a bad way to go either. It’s best if you go with someone in a different area of expertise. For instance a game designer and an artist. A producer and an engineer. Or if you’re two engineers than make sure to distinguish yourselves. That way you’re not competition to each other. Even if you’re both game engine, which areas do you focus on. Or perhaps you’re both graphics but one does more gameplay and the other more engine, etc. Just always present yourselves as doing two different things, even if you overlap in what you like. You’ll hear about more job opportunities and have more to talk about with the recruiters.

 

Cool Stuff!, Game Dev Adventures!, Helping Hand

Game Projects I: Week 10 — Spring Break

Spring break was amazing! I got to go to my brother’s work and meet his team and bosses. We set up a meeting with his bosses and I got to interview Christina. She was really nice and open. She, like myself, had a degree in something other than computer science for her undergrad and then switched to computer science for her masters. She was doing really well in the company and had excellent experiences. She asked me what I wanted to do and I told her I was open to new experiences. Then she gave me some excellent advice: make a list of all the things you want in a company that you want to work for. For herself, her company met everything she wanted.

She also told me, in talking about being a woman in engineering, that she’d never experienced discrimination. Being in the workforce in California where they’re more forward-thinking and woman are urged to seek more professional jobs, if anything she’d experienced anti-discrimination where she was actually helped out a bit more because she was a woman.

On that same note she told me to always think of myself as an asset.

“You’re an asset to the company. You are. You’re worth every dollar they spend on you. Be confident.”

Armadillo Smash N' Roll!, Cool Stuff!, Game Dev Adventures!

Armadillo Smash N’ Roll! Awarded!

Armadillo Smash N' Roll

Just got the news from our amazing producer Brad that Armadillo Smash N’ Roll! won an Editor’s Pick Award on the Windows 8 store!

WHAT?!?!?!?!?!?!

So grateful I got to work with such a great team and to have our hard work recognized for the awesomeness that is adorable little Armie! MADE MY DAY!

Check out the FREE game awesomeness from the adorable little Armie who won an editor’s pick award on the Windows 8 store!

 

Cool Stuff!, Game Dev Adventures!

Game Projects I: Week 8 — Crunch Time

One week to industry panel! We knew this game was going to be difficult to make, so no one was surprised by the amount of work left to do before the industry panel.

At this point I had had conversations about how to do the ghosts on several occasions with Owen, Binoy, and especailly Shane who was always more than willing to help out with creating meshes and art whenever we asked. I was having another such conversation, drawing up problems and possibilities with Sean, Owen, and Ryan, when my fellow mathematician, Skip Fowler, listened in to our conversation and we started talking about how I was going to calculate the metrics for the ghosts and place them in the scene (neither an easy nor straightforward task). It started like this.

Skip: “How are you going to do that?” Curious.

Me: I explained several of the issues of with having to place an object on the scene when it’s position is determined dynamically by two different sets of inputs but is also reliant on track position.

Skip: “How are you going to do that?” Truly pondering the scale of the problem.

We then talked lengthily about the mathematics behind calculating the metric of distance in R3. Thank goodness for his real analysis background. The solution, long term, is line integrals! Genius! Knowing the answer in myself, but wanting confirmation I asked Skip if I could do it in a week. He laughed and shook his head. “No way.”

All righty then, back to where I was at. I had to come up with a cheat.

The other issue was placing the car on the track. Once I knew the metric I was also having issues placing it in the right position. It was a continual issue.

Shane had designed a new 3D track and Binoy had conquered the flip turns, at least enough for a playable demo. So it was my challenge to get the ghosts in the right positions.

I spent the weekend in the lab. Shane was often there, and at times Binoy, but mostly Shane. Brad joined us as well to make videos and prepare the slidedeck for the presentation.

I got a little frustrated with not being able to get something to work. Shane’s new 3D track allowed me to still cheat the metric easily: z-displacement. But it also introduced a huge problem: Now the rotation of z was also dependant on the relative position of the player to the track. Calculating the rotation of the ghost dynamically had already proved a problem earlier in the process and it wasn’t proving any simpler.

So I decided to add something flashy. I gave both the cars trail renderers and added some particle effects to the car that was in the lead determined by the same metric as the ghosts. The trail renderer added another visual cue to the player about where their opponent had gone if they were behind by only a couple seconds. And if they were “in the lead” the particle effects gave them a visual cue for that as well. The two together added to the ultimate goal of communicating to the player their relative distance from their opponent without using a HUD, and added to the overall head-to-head feeling.

I then returned to the issue of the ghosts and HUZZAH! At the end of the night with some creative ray casting (at least I thought it was creative) and special meshes from my artist I got the ghosts to follow the correct path! WHAT!!! It was so exciting! There were several cheats still in play, but it was working in 3D space.

Cool Stuff!, Game Dev Adventures!

Game Projects I: Week 6 — GHOSTS!

Being sick over the weekend I was seriously panicking. I had no idea how I was going to write the ghosts.

The problem with the ghosts is that there position is dynamic: depending on input from the player for different parts of their positioning, and then they have to find the track.

For instance: let’s do the ghost for player one.

So player one is at

  • p1=(x,y,z) and rotation r1= (x,y,z).

Player two is at

  • p2=(x,y,z) and rotation r2= (x,y,z).

For ghost one (the ghost for player one), we need determine AT RUN TIME the following:

  • g_p1 = (x, y, z), and g_r2 = (x,y,z)

Problem Rotation: we wanted the ghost to mimic the rotational movements of the player. So if they were moving left, right, or had flipped over, we wanted to show that on the track.

Solution Rotation: So rotation, in 2D space, should be g_r2 = r1 for x and y. We don’t have to worry about z rotation because the road is flat (we’re not in 3 space). Only you do want to show when a player crashes, so z rotation of player1 does matter. Aye, aye, aye. I just assigned g_r2 = r1 in 2D space for now, but this became a major issue in 3D space.

Problem Position: The position of the ghost should somehow measure the distance that player1 has traveled on the path player2 is on if he’d taken the same path as player2.

Problem Metric: How do you measure the metric and what should the metric be?

I had several long conversations about what the metric would be with many different people many different times. In fact, in two different talks with the professors we talked ourselves around to the others ideas, which left me back at square one. What is the metric. Here were all the ideas I thought of and considered. The ones I thought would work the best were from start to current, or relative closest behind.

  • The ideas ranged from
  • Measuring the distance traveled from the beginning to the current position (easy)
  • Measuring a relative distance to the other player by measuring backwards to the closest fork and finding the best path
  • Measuring the best, worst, or average distance to the end.
  • Use some type of displacement

Solution z-position: For this I called in help from a friend. Ben Driggs came over late and we discussed the issue. Since the race I was making happens mostly in 2-space he suggested making the metric the displacement in z. Not a true measure of distance, but a place to start!

Problem Position x,y: While this gave a resolution to the z problem, it didn’t solve x and y. I didn’t have a lot of time to figure something complicated out, and since player2 is the one that needs to see the ghost I slapped on the ghost’s x,y as determined by player2. This meant that effectively player1’s ghost “floated” in space (the backdrop of the race was in the air!), but it gave an excellent place to start for play testing to see if the ghosts were fun at all.

So to sum up:

  • g_r1 = r1
  • g_p1 = (r2.x, r2.y, r1.z)

We also had the art added in with arrows, landmarks, and a finish post. It made the race super fun. We found that having the ghosts on the path with us did provide that head-to-head feeling of having other racers with you and still allowed for you to choose the path you wanted to go on. So the demo was a success.

Armadillo Smash N' Roll!, Cool Stuff!, Game Dev Adventures!

Game Proto-Publishable 4, Week 6: And… PUBLISHED!! WOOT WOOT!!

Phew! Week 6 of the proto-publishable was a rough one! The professors continued to add more “final” projects onto an already full load so sleep I did not. All us engineers had a memory manager due, of which the professor only gave us one half of a lecture on to make it from, Friday at midnight. After two very long days making that, it was actually kind of fun though I spent all my free time on it (and I nailed it! Totally got an A in engineering!), Gagan and I headed over to the game lab for what turned out to be a very long night. Team Monkey Love Hippo also didn’t pass certification, and so Binoy also joined us.

Despite a very long day, it was actually really fun. We all worked on both games: Binoy helped us and we helped him. I helped Gagan with UI aspects of movement, Binoy helped Gagan with sound, I helped Binoy with UI, Gagan helped with photoshop projects, and I did all the builds. Ha, at one point I told Binoy (who needed a break from making his game) to go help Gagan with sound while I did his UI because he couldn’t get it working. Brad occassionally called in to check in on us, and then I gave him a call when we finished our build and uploaded it to the windows 8 store. I then helped Binoy get theirs published. At 4am we called it quits! And by quits I mean we went to Binoy’s and played games til 6am when which is when we all finally conked out.

I was sick with worry all weekend that we’d missed something and would have to head into the lab again, again on our holiday break! Brad called me at 11am at work on Monday and told me the news. “So, yeah, they finally got back…” Oh great, back to the lab, I thought. “So Yeah, uh, we’re published.” Screams of joy ensued.
The levels still need some major tweaking and we’re working on fixing the controls. There have been some major issues with them so I’m very proud of the quick solution we came up with that very long Saturday/Sunday in order to get the game published to Windows 8, but they’re still not quite there for the game play. Really the game’s momentum based movement was optimized for an accelerometer or mouse, and we had to make it work with touch (because of Microsoft’s certification for publication requirements), which ended up being a bit of a hack job. Also the levels, after we finally had some time for playtesting, need some tweaking.

Despite the control and level tweaks that need to be made, Armadillo Smash N’ Roll! is still a super fun game to play! It’s just a little hard to beat! I dare you to pass level three!! 😀 Remember all this when you download the game; don’t be too harsh in your critiques. Give us 5 stars so we’ll come out with improved future releases. (We are working on it!) You can get Armie the adorable armadillo’s game here.

Cool Stuff!, Game Dev Adventures!, Helping Hand

Where’s the fun?

I am so grateful that I’ve finally found a way to do all the things I love doing — writing, editing, math, engineering, games, art, creating, story telling, blogging, collaborating with amazingly talented and creative people, and just having fun making GAMES!

There’s so much theory and study to game design and play, but I love that the most important end goal in every game is FUN!! The question always comes back to, “What makes our/your/this game fun?” Because games should be an experience, magical, challenging, beautiful, puzzling, and fun, Fun, fUn, FUN! Just like life! (Note to those that follow: a question you will always be asked and must KNOW the answer to is: “What is fun about your game?” If you don’t know, discover it. If it’s not fun, fix it or scrap it. If you know, add the fun everywhere you can without being too much and tell everybody!)

I’ve never been so inspired or felt so passionate. This game development/engineering/design journey is amazing. It’s hard, it’s wonderful, it’s challenging, it’s amazing, it’s keeping me super crazy busy (I think I get to sleep at Christmas time, maybe??), and it’s fun! Just the way it should be.

Where’s the fun? It’s right here.

(here = where I am because I am fun!) 😉

Cool Stuff!

Game Sites

In my game research and conversations with my incredibly talented, smart, and fun fellow students, I’ve discovered a couple really cool gaming websites. There are a TON out there, but I thought I’d share the most recent two I’ve come across:

80s Arcade Games!

Aw the 80s; the era of big hair, neon colors, and awesome arcade games played with only a joystick and two buttons. It’s crazy the variety of games that occur on this platform with nothing more than movement and two buttons. There are a couple websites you can go to to play these games for free online but the one I found was free80sarcade.com. It’s crazy the amount of things you can do in this seemingly limited environment: Donkey  Kong, Gauntlet, Asteroid, Commando, Centipede, Frogger, etc. What’s interesting is that though you may not recognize these games for themselves, unless you grew up in the 80s, many of them are recognizable as mini games in later, more sophisticated video games, like Dig Dug, or Donkey Kong. But they’re still fun just play on their own.

Random Game Facts

Did you know that most of Pokemon gold and silver music was composed on an amiga? Did you knowthe iconic Final Fantasy song “Prelude” was made in five minutes? Did you know you could find more random facts like these on http://didyouknowgaming.com? I didn’t either, but soon we’ll all know.

 

Cool Stuff!, Game Dev Adventures!

Rapid Prototyping 1: Game Prototype 1, Week 1 — Game Creation

Aw, rapid prototyping. The class that may just kill all the engineers.

Let me explain: we are to create a new game around a new theme given to us by new clients, with a new team, in a new language — which most, if not all, of the engineers won’t have used before — every four weeks. We have class for four hours every Tuesday and Thursday. Which sounds like we have more time than we really do to program the game. The first class is taken up by the clients and them giving us the game and then our team coming up with a game idea. The second class is spent trying to learn the language (and all the time in between). Then we have the second and third week which is mostly spent on the game, and then finally on week four we practice pitch and t

On Tuesday, the first day of class, we were given our first assignment. Project 1:

  • Game clients: Corinne & Amy
  • Game theme: cute, mobile, achievements (Corinne), pink & purple (Amy), not pick (Corinne), something they could pick up and play at anytime.
  • Group: artitst Jing; producers Toni & Brenton; engineers Hailin, Binoy, and myself
  • Language: Moai

My first thought, “What the heck is Moai?” Then, “I have to make a game in Moai?? How do you even pronounce it?”

Immediately after getting this information we were divided into ten teams. Each team got right down to business in coming up with a game idea, or at least our team did. During our brainstorming session their were some great ideas pitched. Toni pitched teddy bears and I immediately jumped to pet store which everyone else started building on top of. So that’s what we built up a game idea around managing a pet store, splicing for new creations, teaching the pets tricks, finding strays, etc. We had a billion ideas to go from.

My first group is going to be awesome, I can already tell. Everyone listened, compromised, and was willing to do whatever to make a great game.

On Thursday the engineers got to go down as a group to EA in Salt Lake while our teams did an initial pitch of out game ideas. It was hard not to be their to support the team, but EA was a cool experience too. Since none of us were getting to hear all the ideas we all talked about our games with each other and asked the all important question, “Has anyone used Moai or Lua before?” The answer was no. Not a single engineer was familiar with either. Though, to be fair, most of us had at least heard of Lua before. Where did this Moai come from?

EA-SLC-engineers

Brenton and Toni pitched the idea to Amy and Corinne and the idea of micromanaging the store got shot down. Our artitst, Jing, had also drawn up some awesome concept art of store and the animal, but received the same feedback: loved the animals, not so hot on the store idea. When they brought back the news to the team I was all like, “That’s easy. Let’s kill the store and keep the animals. We can build something else around the idea.” Everyone else seemed to be thinking the same thing. So no store, :(, but lots of cute animals still! 🙂

Jing's store cocept art. The store idea got scrapped. For now we're keeping the animals, but they don't have anywhere to live...
Jing’s store concept art. The store idea got scrapped. For now we’re keeping the animals, but they don’t have anywhere to live…

This is going to be an interesting project, and a fun group to work with. At the end of the week we have concept art for animals which have no place to live, a million mini game ideas, and we’re trying to figure out what Moai is. Stay tuned…