Monday, October 20, 2014

iQuest #4: Ethics

RESPONSIBILITY!

     Responsibility is a key aspect to success in life. Without it, nothing would be accomplished. When people trust you with a task, you are responsible for its completion. By being responsible, you are proving to others that you are able to pull your own weight when executing a task even with other people and other people should trust you in the future.
     Responsibility means you are able to do what you are supposed to. When you are entrusted with a job, you will do it regardless of if you get a reward for it or not. You simply do it because you are responsible for getting it done. You plan ahead to do your best to get things done. When things don't work out, you persevere and keep trying. Self-discipline is a major part of responibility as well. You need to self-discipline to get yourself to do the task without being told to. You are aware of the consequences of your actions and do your best to avoid all negative outcomes. That is what responsibility is.
     I believe responsibility also means you are able to execute all of the six pillars of ethics. You're trustworthy when you're responsible because you're able to do things that are expected of you. You respect others and will carry out the tasks they have entrusted you with. You are fair and caring to those involved because of your trustworthiness to do your job right and on time. You demonstrate good citizenship skills by being responsible as well, and that is why I think responsibility is the most important of all 6.
     Without responsibility in the workplace, nothing would get done. That's it. Nobody would be responsible to complete their tasks and the business would fail. I don't think lacking any of the other traits would have as much of a dire consequence.


Monday, October 6, 2014

How I got into game design, part 1: The Xbox Days

My story actually starts with Microsoft Word.
MICROSOFT WORD, OF ALL THINGS.

I will try to keep everything as straightforward as possible here. I just can't remember the exact age I was when all this stuff happened so until I specify otherwise, everything from here on took place before I was 13 years old. Also, most of the stuff I am going to show in each blog post is SUPER OLD. I was just a youngster. It was a simpler time.

I used Microsoft Word in elementary school. I found some kind of scripting tool in it, and that lead me to discover JavaScript. THAT lead me to discovering HTML and CSS markup. I spent a long time learning about it because I thought it was interesting that I could make stuff happen on the page. I spent time making random webpages that did cool things using cool scripts and I hosted them on a free subdomain on webs.com so I could feel like they were part of an actual website.

Some time around there, I convinced my parents to let me buy Halo 3. I played that for a good couple of years and made some good online friends. I was always known as the one who made custom maps and gametypes from scratch for everybody to play on in 16-player parties. I was also known as the guy who wanted to find as many easter eggs and glitches in the game as possible. My curiosity was unending. Here's an example:


I even discovered a major glitch in Halo 3 before anybody else:


But eventually I ran out of things to do in the game. I got bored. I was good at it, I made a bunch of custom content using the tools the game provided, and I had searched every nook and cranny of it looking for easter eggs and glitches.

I asked myself... why can't I add to the game's experience? I researched how I could mod the game and managed to learn how to make a few simple usermap item swaps. That means all I could do was swap out items placed in a custom map with things that you couldn't normally place. That was cool and all, but it was too restrictive. I couldn't change the actual map itself.

So when I was in middle school, I found out that I could perform a "JTAG hack" on an older version of the Xbox 360 and that would allow me to run games directly from a usb drive plugged in to the console. That means I could change the game's files in any way I wanted and actually run it. The big deal was that I would have to open up the console, solder wires to the motherboard, connect it to my computer and flash (flash means to send data through the wires and into the motherboard) a bunch of crazy software onto it. I had no idea how to do that, but I was up for the challenge.

I teamed up with my friend and we spent $100 on a an old refurbished Xbox 360 that fit the hack's requirements. I followed a youtube video that told me exactly how to do it. That very video is actually still around! Here it is, if you want to see what I had to do:


And here's a diagram of what I needed to solder on to the motherboard:


So I did that with my dad's help (I actually did it successfully again on another Xbox 360 a year or so later on my own) and managed to run a bunch of really advanced mods in Halo 3. Take a look, and don't mind the constant music:




In order to make these mods that affected the whole map, I had to use a program called Alteration. This program allowed me to open the map files that held each map's information, like all of its models, animations, effects, vehicles, weapons, settings, etc. It allowed me to change anything as I pleased.

Not my picture, but here's what it looks like:


This program only allowed me to change things though. I couldn't add or remove data from the file. That means I couldn't import my own models or assemble my own stages or anything like that. More limitations!

Sometime after I got pretty well known in the Halo modding community, I started to make some friends that were able to provide me the source code for Alteration and with private xbox executable files for Halo 3 that allowed me to do things like mod the game while it was running. I started to look into how I could improve Alteration by programming in new features. Alteration was written in C#, which I found to be dramatically similar to JavaScript. I had the upper hand, but the source code was still to convoluted for me to understand at the time. I had no knowledge of how to read and write binary files, how to handle the data from the map file, or how to do any complex operations in C# because none of that was part of JavaScript.

I still worked on learning C# though. While I studied that and made some weird changes to Alteration that mostly broke existing features instead of improving them, my cousin introduced me to a different modding scene: Super Smash Bros Brawl custom stage mods.

That's where I'll wrap up the first part of how I got into game design. I'll post the second part soon, where I'll go into how my video game modding focus switched to Super Smash Bros Brawl and where I went with it.

Sunday, October 5, 2014

iQuest #3: Semester Goal

My first major goal I will accomplish by January is actually a compilation of a lot of smaller goals. I will get the first character model sculpted (not necessarily textured), rig it to a bone tree, import it into the engine, get most of the basic character movement code such as walking, jumping, etc written, and will start blocking out an alpha version of a stage.

In less technical terms, I'm going to put a playable character and test stage in the game.

My first reason for doing this before anything else is because I actually have been working on designing this character for a while. She has three different concepts drawn by three different people that I am working with. 

My second reason is that I need to get acquainted writing code in the unreal engine (I'm going to call it UE4 from now on). UE4 provides an intuitive set of controls that let you immediately add your content and let it interact with the world, but uses regular C++ code with some extra unreal-specific parameters that I need to learn how to use. Not only that - I'm not fluent in C++ just yet.

My last reason is I will eventually need a stage with obstacles and things to test the gameplay on. A flat plane as a world isn't going to provide me with a very good debugging experience, nor will it be very fun for somebody to play on. 'Blocking' a stage is where you put visible collision objects where detailed models will eventually go. I am not going to be modeling the actual stage just yet.

My five action steps I am going to take are as follows:

1. Focus! This is honestly the hardest thing for me. I can do anything eventually if I set my mind to it, but avoiding distractions is hard, especially when I'm sitting at my computer to do work.

2. Ask my mentor questions when I need help or advice. I am a silent problem solver, like batman. I rarely ask questions in class. This is different though - I am entirely self taught. I will be able to achieve more with help from my mentor.

3. Work on my time management. Prioritizing schoolwork, game work and other real life things is tough.

4. Work on my goals at least a little bit every day.

5. Don't let my perfectionism stop me from ever 'finishing'. I tend to never be satisfied with my work no matter how good it really is, which is a gift and a curse.