Monthly Archives: April 2014

Semester Unabridged

I have decided to fill in the gaps in my blog since January. I have compiled a list of dates that could use more detail. The compilation of details will be my semester unabridged. I will start in January and move progressively forward in time.

January 23, 2014
—————-
I wrote an entry on the twenty second however, the week could use another entry. I responded to a position requiring building web servers including databases and back ends. I was picked up for the back end on the “Reflex Speed” project. I did not know at the time what the project was or exactly what I would be doing, but I knew I could do it. Bob talked to me about the position. Jose talked to me prior to writing the January 22, 2014 post informing me to speak with Corrinne regarding the position and that I have a job. I was with my team when I received the news. I was a latecomer to The GApp Lab starting on the twenty fourth of January. I provided expertise in XML and web services. My prior work experience was on the client side of the application, so working on the server side was new and exciting. Overall, I would recommend working in The GApp Lab to future EAE students.

January 28, 2014
—————-
I had been spending time working on the robot game. I was using a platformer character controller for Unity provided by Antonio which he had acquired prior to the project. The robot game was a platforming game where the player gave away parts in order to accomplish goals. The premise was to break the character down instead of building them up. An example is that players could give up a leg and would become slower as a result.

During this period I was growing tired of the continual design meetings regarding the game. I use the word continual since the meetings were four to six hours each without prototyping anything. The beginning of the semester was occupied with meetings which turned out to be an ineffective strategy. Unfortunately, the meetings from the beginning of the semester left a bad taste in my mouth that stayed with me for the rest of the semester. I am still trying to figure out how to enable effective communication between production and engineering since production chooses to exclude engineers from communication or require long meetings which are both not effective methods of engaging engineers.

January 30, 2014
—————-
My team was divided into two groups; one of which worked on the button game and the other worked on the robot game. My objective was to beat button. I builtĀ up three separate examples of puzzles for the robot game. The first puzzle was straight forward requiring the player to give up a component to open the door to the next room. The second puzzle was a series of platforms to which the player could attach by giving a part. While a part occupied the platform said platform could be moved to the left and right. There were four platforms that needed arranged in order for the player to jump to the next area. The third puzzle was a boulder puzzle where the component opened a door at the bottom, but also a trap door releasing a boulder. If the player chose a leg component then the boulder would smash them.

Overall, the robot game presented design hurdles that my team was unable to overcome so instead of iterating we threw everything away and started on an entirely different project. I spent a significant portion of the week working on the robot game. I understand iterating, but throwing everything away when I had volunteered the effort I had rubbed me the wrong way. I am still not sure why my team didn’t choose another of the hundred game ideas proposed during the beginning of the semester reinforcing my idea that the beginning of the semester was ineffective. I should have actively objected to the random new idea of the premonition game for process reasons. I started contemplating leaving the team. I still do sometimes however, I do not think greener grass exists. I will be attempting to work with team members over the summer and in the fall to build a process that makes sense, holds people accountable, gives credit where it is due and works in an iterative fashion with a plan.

February 20, 2014
—————–
I built a significant piece of the premonition game on the thirteenth. The capsule movement had been created in nearly the form that was shown during the industry panel presentation. There were a few iterations and tweaks that were requested and I continued to enhance the system as requested. I built the system to be flexible for the needs of a rapidly changing idea. I built a maze test bed for the system since it was once of the ideas proposed during a design meeting. The system had the beauty of restraining ideas about the premonition game helping avoid the problems with the robot game. The restraints created by the system can be observed in the current iterations of the premonition game in the use of exploding tiles since the system was a tile based systolic array. Even though the team is using navigational meshes the tile system is still part of the game. I added falling of capsules and played with behaviors as requested including randomizing location of the capsules and limiting spawn numbers.

February 25, 2014
—————–
I handled requested features, but was behind in game engineering. I decided to take time to work on game engineering outside of requested features during the projects class. I was also succumbing to stress growing grumpy with everyone. I took time to collect myself. I was unsure how to help the project and was often told the other engineer was handling everything, which still happens and still bugs me.

February 27, 2014
—————–
The presentation to the industry panel was coming up. During my studies I have learned that works do not gain significant value at the deadline. Students that study for tests in cram sessions the night before do not learn enough for the test day or long term. I added a few requested features associated with the system including allowing capsules to fall through the floor when a bounding box exists below them and left for the weekend.

Over the course of development I felt something during the invisible floor level. The something I felt was that being overwhelmed with information and then making a choice was fun. The premonition team had built an iteration of three dimensional minesweeper that required thought and judgement. I was excited about the premonition game.

I would get a quote, but the Skype chat is too convoluted to find a quote. Skype is a useless tool for large teams to communicate. Furthermore, Skype with large teams encourages the formation of cliques of people who are on Skype all the time, but still feel like they are communicating with the group. The problem is that when other people log in to Skype there are nine hundred unchecked messages which are mostly unrelated to the project. The result for my team was devastation of communication, workload sharing and a consistent game idea.

March 9, 2014
————-
Spring break started and I had high hopes of catching up on the game engineering homework. I was able to get a version of collision detection and response working. The result is still not up to my standard. I will be fixing collision before the thirtieth of April. Spring break was needed. Stress was getting the better of me and I was unhappy with everything. Premonition had beat button due to the work of a team within a team. The rejection of button shouldn’t have felt like a victory since everyone was on the same team, but it did.

March 16, 2014
————–
I arrived in San Francisco for GDC after a two hour plane flight. I was excited and nervous. I appreciated Erin, my wife, taking me to the airport and seeing me off. I sat next to a fellow that was going home to San Francisco from Salt Lake City. His wife was in Salt Lake City for a biotech conference. He spent time on the ski slopes. He told me about San Francisco and helped give me directions to where I was going to be staying including when I should get off the BART. I checked into Bay Bridge Inn and went sight seeing.

I started by walking up Powell Street and seeing the trolley car system. I climbed to the top of Knob Hill on Powell Street and noticed the Coti Tower. I went to the Coti and enjoyed the view of the Golden Gate and Bay Bridges. The only other time I had seen the ocean was in San Diego with Erin. I liked the views and how open the ocean seemed. I walked through China Town and saw some nice cathedrals/church related buildings. The statue to the firemen reminded me of how many times the city had burned to the ground and yet the buildings still share adjacent walls. As an engineer that bugs me. I ventured to the pier and had clam chowder in an expensive building where everyone was dressed in suits. I looked at Alcatraz from afar. I looked at Ghirardelli Square and the painted lady. I made my way toward the Golden Gate entering a national park that was a restored marsh from a refuse area. The sun was going down, so I retired for the night. My sleep was interrupted by people yelling at each other in something that sounded like a drug deal, but that’s San Francisco. I passed a guy that said he was carrying weed if I was buying. My impression was that the city was busy, dirty and expensive.

March 17, 2014
————–
I attended the Math Bootcamp at GDC. I learned a lot about the mathematical thinking in game development. My favorite talk was Eric Lengyel’s talk on Grassmann Algebra which uses the wedge product to generalize the dot and cross product. I also enjoyed inverse kinematics in which the physical reaction is rebuilt across a sequence of joints. Looking over the offerings at http://www.essentialmath.com/tutorial.htm it appears that the topics change yearly. I plan to attend next year. I would like to join the game developers that really understand the mathematics behind games.

March 18, 2014
————–
I attended the Physics Bootcamp at GDC. My favorite talk was Dirk Gregorius’ QuickHull talk. I need to implement the topics covered in both math and physics. I hope the talks are different next year. The page for physics is http://box2d.org/downloads/.

March 19-21, 2014
—————–
I went to sponsored sessions regularly. I went to the career center, but it was a waste of time. The highlight was watching Cyber Heist compete against games from other schools. Cyber Heist was robbed, but congratulations to Kraven Manor. The EAE program was well represented. I wish I won the graphics card at the AMD Mantle talks or the laptop at the Intel competition. The last three days of the conference are primarily about swag and talking to random industry people. I had the conference built up to be more, but I know what to expect next year.

March 22-23, 2014
—————–
I had a late flight and wanted to swap it out. I went to the airport early to try to get an earlier flight. I lost my wallet in the cab on my way there. I realized after the driver left and before I entered the building. I made some calls to try to contact the driver, but to no avail. I canceled all my cards, submitted a police report and submitted a fraud report. I decided to enter the airport and try to get my flight changed. I made it through TSA, but was unable to swap my flight at 10:00 PM. I spent from 4:00 AM to 10:00 PM in the airport without money or food. I had stayed up Friday in order to ensure I arrived at the airport early enough to swap flights. I had a hard time staying awake and active until 10:00 PM with the worry of losing my wallet and no food wearing me down more. The only occupation I had was the reader for Ethics class, so I read the entirety.

At 9:00 PM I was contacted by the driver regarding my wallet. He found it in the cab and wanted to return it, but I would have to pay the fare. I paid the fare and a tip for bringing the wallet back. My $5 cash for don’t mug me insurance was missing, but everything appears to be in order. I learned the BART is awesome compared to cabs. I ran through TSA and barely caught my flight. The flight was to Los Angeles.

I wouldn’t leave Los Angeles until 6:00 AM, so I spent the night in LAX. All the food facilities were shut down and I didn’t know where to go otherwise, so I huddled myself over my luggage and tried to sleep through the six hours. Airports are not fun to sleep in often leading to interruption from the public announcement system. The flight from LAX to SLC was quick. I had never been so happy to be home. Erin was at the airport when I arrived home and I was very happy to see her. She took me home, fed me and put me to bed. My impression of San Francisco as an expensive and dirty place is biased by the experience.

March 25-27, 2014
————–
Getting back into the swing of class is hard after a two week vacation. Somewhere in here we were visited by Tina Ziemek and Sebastian (sp?). My team began talking about the premonition game again and so long meetings were back. My team decided to use Unreal Engine 4. Everyone was learning how to use the new tools with the goal of building a prototype similar to the industry panel version. The tile based systolic array system I built would be replaced by a navigational mesh. The tile system still exists however in the exploding floor panels of the hallway. For the navigational mesh the team needed to sort points in three dimensional space, so I decided to take that part of the project.

April 1, 3, 8, 10 2014
————-
I began white boxing a distance calculating function. I spent a lot of time testing the in-built metric of the navigational mesh and was unable to find an in-built solution for distance calculation in three dimensional space. The last straw toward concluding the information was not useful was in calculating the distance to a cube. A cube has six faces. The in-built function reported a different distance to the cube on every face, so the metric was meaningless.

April 15, 17, 22 2014
————–
I sat down with Sidd and made a decision that the L^2 norm would be fine for EAE day. I built a sorter that would work even though the output is not meaningful for the game. An example of the problem would be two points that are close in coordinates, but there is a wall between them which should drastically increase the distance. The point still ends up lower cost than a direct point that has no wall. Common solutions would be using A* on a discrete metric space, but there was not enough time to build a meaningful implementation in Blueprint. Cutting corners feels dirty especially when the solution is temporary and not correct.

Distance and sorting were the only task given to me. After trying to find an in-built solution I gave up and implemented a hack. I did not know the state of my teams game until EAE day. The process my team is using is broken. People are not sleeping. People are working heroics i.e. coming in for long periods on Fridays (see http://c2.com/cgi/wiki?HeroicProgramming or http://c2.com/cgi/wiki?HeroCulture or do a Google search since the term is commonly used). Production may be able to fool less experienced engineers however my team has been pulling heroics which is an example of poor planning, mismanagement and sloppiness. In order to make our producers better Cohort 4, we need to stop allowing them to manage teams using heroics. I was unable to attend the heroics where tasks were actually broken down and built. Fall semester I was involved in a lot of heroics and I thought it was the way to develop prototypes. In the future if I am able to attend such heroics I will boycott for the same reason as not cramming for tests. Heroics work for contests since the test is timed, constrained and voluntary. I am boycotting heroics. It’s not SCRUM or agile. It’s broken.

April 24, 2014
————–
EAE day! Yay! We lived. Lunch was great. I spent time representing Reflex Speed from The GApp Lab. Developing the back end on the project has been an awesome experience. I want to deliver a product that meets the needs of our client, even though it’s still referred to as a prototype.

I saw the prototype for the premonition game in it’s entirety. There are some major bugs including a consistent crash to desktop. I blame the heroics. I noticed critical reception that rejected ideas at EAE day was dismissed using producer talk which means we didn’t learn anything last semester when we had forms to fill out for our prototypes. I am not a member of the Skype clique on my team, so my critical reception is also dismissed.

I am looking forward to the summer. I am going to polish the back end for Reflex Speed. I am going to bring my engine up to my standards and expand it. I am going to explore graphics and artificial intelligence to get ahead for next fall. I am going to build pet projects with my wife. I will be interning at Blackrock Microsystems for the third year in a row working on a new project in neuromedical device research and development.

The first year in the program has taught me a lot. I have learned to work with producers, artists and engineers of varied experience level. I have learned how to recognize mismanagement of projects. I have learned that an idea without a prototype is worthless. I have learned that game developers imply ethics whenever a project is developed. I have learned about the architecture of game engines and have found my love in game development. I have learned that we don’t know enough about process yet and need to break the process that is leading to heroics.

Unreal Speghetti

I finally have some time to post. I have been working in Unreal Engine 4 toward building a point sorting system. In C++ the system is trivial however, blueprint is a new and fun experience. I am still uncertain how to hook C++ code to blueprints, but the idea will open a new level of leverage for level designers that can use “black box” C++ code using the visual Unreal Engine 4 blueprint model.

I have been busy. I haven’t had a solid block of time to work on projects since returning from GDC. I have had little time to make blog post as well. I am fatigued. Yesterday I woke up in the middle of the night, walked out of bed and fell asleep standing hitting my head on the wall on the way down. I have been having a recurring dream about snakes which is odd. I have lost steam on the premonition game. I don’t understand the new concept mechanically. I continue looking for systems that I can build for the group however and will build a better metric for distance and sorting system. My current dumb blueprints are below.

EuclideanDistanceR3

EventGraph

SortFloats

DumbSort

I am going to leave the post now. I am spending the weekend with my family for Easter. Hopefully I can get some wind or steam or mojo back in my sails.