Room Breaker: Weekly Update (12/1)

This Week

Tee Hee . . . I am cheating a bit with this update. I am actually writing this at 2:20 am on Monday 12/2 rather than on Sunday 12/1. And I know that it will keep every single person who reads this, up into the night. Mwuahaha . . .

Anyway. Here we go, week number two. This is the last week of the school semester and I am lucky enough to not have an incredibly stressful final's schedule. Only a couple of test and a few assignments keep me away from the winter break, and more time to work on this project!

For this update I only spent a couple of hours on it. Mainly tonight (whilst playing the incredibly addicting game (Cookie Clicker). With this update I decided upon moving away from a typical object driven work flow. What I mean by that is have a set of main objects that create and track, at runtime, the rest of the objects needed in the game.

I realized that trying to follow this style is working against the grain of how Unity is designed. Unity is a Component-Entity system, and this is a major reason why it such an amazing tool. It only makes sense to write code that continues this style for my objects.

Currently I have four components that I have created:

  • PositionControl
  • Head
  • WallGenerator
  • Wall

PositionControl will sit on the object that acts as the head of the snake and listen for the player input, up/down/left/right. As it gets this input it updates the position of the snake.

Head is another component that sits on the snake head object. Right now it doesn't actually do anything but put the head in the center. It originally held the position code, but I decoupled into the above component.

Wall Generator sits on what will be the level objects. It wants the designer to input a width and height for the wall in the inspector, and then on game start, it will construct a wall of that given size based on the Wall prefab sitting in the world.

Wall, like head, does nothing yet. 

Next . . .

In the next update I plan to flesh out Head and Wall. I want to make a new component Body that head will inherit from. Body will listen for general collisions, like walls, but the head has to listen for a couple of special ones like food and power ups.

I also plan to add the collisions so that when the snake collides with a wall or a part of itself, the game will end.

 

Room Breaker: Weekly Update (11/24)

So, as I do, I am making plans for something rather than doing it, and once again I hope it sticks. . .BUT . . . I am now going to do a weekly update for Room Breaker.

Every week I am going to try and keep working on this project doing tiny bit by tiny bit. At the end of each week (sunday) I will make a blog post talking about the things I did and the current state of the project.

This week I finished a really basic refactor (to about 30 min over a week) of splitting apart the position code from the player. I decided that the code organization for this game will follow the component entity system design like unity does. Each of my game objects will have their own scripts that keep track of their own tasks. This way everything is broken apart and decoupled. This will also allow for plug and play for reusable scripts! yay 

Also I downloaded Unity 4.3. I am excited for this update because it brings in the 2D tools native now in Unity. But, I am going to stick with Othello for this project. I am familiar with it and would prefer to move on with this library rather than take the time to learn the unity tools inside and out. 

I think it would be a cool, once room breaker is done, to refactor the whole thing to use the native unity tools. That is my current plan anyways.

Until next week . . .

A new era is upon us . . .

Starting November 15th the video game industry and world is entering a new age. I am very excited that I get to witness this transition at the start of my own career into industry.

Since E3 has happened, a lot of  information has been revealed and many different scandals have seemed to pop up. Both of these two consoles are amazing and beautiful in there own right and each has their own flaws. The precedent set by the competition between the 360 and PS3 has been magnified by the excitement. No matter which controller you pick up as your own, these next two weeks are going to be incredibly exciting.

Here is to the next generation of video games!

CS 371p (1pm): Week 9

This week has started of not great, but at least a project isn’t due this week. This weekend I was sick with a high fever so I am very glad that I didn’t have the pressure of finishing one up. Looking back on project 3, knowing I gave my thoughts last week, I just wanted to give a couple of closing thoughts. Allocator was a much nicer project to accomplish than the voting project. The implementation was not ridiculous, and it was fantastic to not have to test it against an online judge for a minimum score.

Now that the last project is over, we have a sparkly new project to work on. Sadly since I was sick I missed the project description in class, but I am not too worried. I remember doing something similar in high school and it has an interesting premise so there a decent amount that makes me want to work start working on it. That is always a good sign right?

In the class we going over more and more about object oriented subject, so I think my fears about this class are fading. I was worried at the start that this class would turn out similar to software engineering where the only subject matter on the class namesake would be in the reading. As of now I am finding that this class is shaping up to be good on its name. I will just have to wait and see what the rest of the class is like to give my final judgment, but from its looking good from here on out.

 

CS 371p (1pm): Week 8

The heap project is coming to an end this Thursday and I plan to actual turn it in. Getting the necessary task done are coming along at steady pace and (knock on wood) the project should not hit any debilitating snags like the voting project. Besides the joy of not feeling heavily stressed by the project, I am happy that it is proving to be more interesting that it seemed at first.  Going into this project I was not looking forward to it at all. After an explanation was given in class, having base code to start with and a partner this time, the task is not that laborious.

Besides finishing up the third project, a new extra credit opportunity has popped up that I am very happy for. Not necessarily because of the credit, but for the chance to get my website reviewed and critiqued. After having a speaker from JPL come and talk to the class about many things, one thing he mentioned was having an online portfolio that is easily accessible by potential future employers. Luckily for me, this summer I decided to finally create a website of my own to host my one off blogs, and create a location for me to show of the projects I am working on. There is only so much that I can to get friends to let me know what they think, but having the opportunity to have the professor and other students look at it has great value. Having recently started a new project, I will be able to dynamically form very good looking project page with the help of fellow students taking periodic looks at it.

 

My new project, Room Breaker

As of yet, I have never made a game. Every time they are too big in scope. I over complicate everything and get bogged down. I have made moves towards making the idea smaller and smaller, but still manage to bite more than I can chew.  Room Breaker, is my latest attempt to , break the trend. (no pun intended?)

With this project I want to try and create a workflow that I can manage with a spread out time frame and not get bogged down. Since I tend to spread my self thin with lots and lots of projects, Ill keep this one small so that I can work on it bit by bit, but not take months to finish it. 

Take a look at the page and ill keep updating as the project continues.  

CS 371p (1pm): Week 7

This week feels like a fresh start. With the last two weeks behind me, I am ready to start these next two off right. I have no tests in my other classes for a while, and all my large assignments are spread out. For this next OOP project, I have a partner and plan to get it going nice and smoothly.

I will say I am not looking forward to this one as much as I was the last. Writing a heap manager does not sound that fun. My thoughts will have to wait until after the project description is given in class. The lengthy page describing what a heap manager does was not very inviting and doesn’t make me very eager to read it. This is in comparison to the last two projects which had simple descriptions. My only goal going into this at the moment is to finish it and get full marks. Since I am starting on time, and because I have a partner, this should not be as hard as the previous one seemed to be.

Looking back at the test we took on Thursday, I thought it was fair. There were a couple of things that I wasn’t ready for, but this is true for every test. I can’t expect myself to know every angle that the questions come at. For the multiple choice section, I felt confident on most of the questions and my grade seems to reflect that. The short answer ones I have the same feelings. I would not be surprised if I got points off for errors here and there for that section. I feel pretty confident in my coding section. I will just have to wait and see what my final score is.

CS 371p (1pm): Week 6

Supposedly someone has found a variant of my project that is accepted by UVa. At this point there is nothing I can do, so I don’t really have much care for it. But the speed at which it was found bugs me. I know that I personally was having trouble finding it, because I had been staring at the code for hours upon hours and so it was hiding in plain sight. I was disappointed that none of the TA’s or professor could help me find this error. It is all in the past, and there is no point in fretting over it. You have to move to what is coming in the future. On this next project, I will have a partner so I will have a bit more help than myself. And besides the next project, we have a TEST!

I have taken downing tests before so I am very familiar with the format; multiple choice question, and coding problems. Over the next few days, by that I mean Tuesday and Wednesday (yay other projects and work), I will try to look over the different readings we had and make note the large points given in the book. On the coding side it is best practice to go over the in class examples. From past experience making sure one understands the different functions he describes is helpful because you often will end up implementing them. Hopefully all goes well, but then again its school and you don’t know what things will happen.

 

CS 371p (1pm): Week 5

 

This week has been very disappointing. The second project was due this week and it was the first project in my entire college career that I could not complete. This is the first major assignment in 7 years that I will have gotten a zero on, and it is not because my program didn't work. On my own machine it got the correct output and passed many peoples acceptance tests, and many more random ones that I created.

I will be getting a zero on this project because I couldn't get the online resource, UVa to run my solution in less than 3 seconds. All of Wednesday afternoon and evening (8 p.m. – 3 a.m.), Thursday (9 a.m. – 5 p.m.) and Friday afternoon (2 p.m. – 7 p.m.), was spent trying to fix this issue. All of Friday I was working with the grader of the project, and nothing we could do worked to get my solution accepted on UVa.

Understanding that it is a requirement for the project there should be a penalty for it not passing UVa. Why though, is it one of the requirements for not getting a zero. This class is entitled “Object Oriented Programming” and I am so disappointed that I will not be able to receive any credit for the work I spent on this project. This isn't a dent that will cause me to fail the class, but it is incredibly unlikely that I will be able to get an A.

This project is an example of why I have mixed feelings for Glenn Downing’s classes, both Software Engineering and OOP. I love the logistical way that is classes are organized and run. His lectures are engaging and the uses of quizzes are great. It’s the subject matter of everything that puts me on edge. I feel that thus far we haven’t really discussed anything in context of Object Oriented Programming.  Our reading has been over this subject, but it never seems to come into context of what we talk about and do for the class.

I would love to have class lectures that expanded on those readings. I would love to have the projects be discussed in scope of what the book talks about.

As an example this project would have been great. It was fun project to design from an OOP standpoint. You had multiple structures to implement and use; the ballots, candidates, ect. The sad thing is that we never talk about this nor will we do a post mortem in class about what would have been good or bad.

I was hoping this class would be more related to its subject matter than software engineering, but it seems that it may not be. It is still early in the semester, so maybe things will be different. We will just have to see.

CS 371p (1pm): Week 4

Test driven development actually worked for me today. In the voting project that is due this Thursday (still getting better at finishing early), my tests that I wrote helped to quickly find an issue in my code. It is almost sad that it’s taken me this long to see the benefit of TDD. Two semesters ago I took Glenn Downing’s software engineering class. That class is all about processes like TDD and the benefits that came from it. I just always ended up writing my tests last due to pure laziness. Finally now I can see the benefit from not going the lazy route; even if it has taken me an entire year. Hopefully after this class I will be willing enough to try and put tests in all my class projects. The gtest framework we are using is very nice to use once you are used to it.

I am excited about this week’s topics. The stack vs heap topics should be interesting. C++ is still my weakest language, but I am getting more and more comfortable with it each week. I am hoping that these lectures will help that understanding jump a few rungs on the metaphorical ladder. Memory management is a large part of how C++ operates so understanding the stack v.s. the heap will really help. 

CS 371p (1pm): Week 3

On wards and upwards: Week Three

The first project has been completed and submitted. I have been through the Software Engineering class where the first project was also Collatz. I had remembered many of the tricks I used before, including the ones given in class. It was helpful on the quiz. I still got the question about ignoring anything in your range that can be doubled. I wish I had tried to put that tip into my project, but I wasted time I could have used to implement it. I believe I became too complacent with the fact I had done the project before.  There were also stupid mistakes made on my part, spending too much time figuring out an issue that I didn’t need to worry about. For a good part of Sunday I was trying to figure out an issue with input that sphere wouldn’t give; anything that would overload an integer.

The lectures the past few days have been difficult to sit in since they are very similar to those at the start of software engineering. I am looking forward to getting into some of the topics listed on the website, and those talked about in the book. Two of them, stack and heap I am eager to hear about since they are two things I always get confused. C++ is not one of my strongest languages, and all 3 of my CS classes this semester are using them. I hope that I will be able to take points from this class and use them in my others. You can only retain information by practice and with all the extracurricular activities I am attempting, class work is the only way I can really do that.

 

CS 371p (1pm): Week 2

Off on another week; I am still getting into the grove of things. School, band, and work are always difficult to balance at the same time.

This past week I gave a presentation on Git and it was enjoyable. Professional presentations are always good to practice and I was glad to have this opportunity. I was really nice to do it twice in one day. I was able to tweak part to be the most helpful to my fellow students.

The main reason for the presentation was to give a helping hand in starting with git. It can be slightly daunting to jump into if you haven’t used it before; even more so when you have to use it for a grade. I know I learned a thing or two by creating the presentation, and from the questions that people asked.

This coming week the first project of the class is due. I have been meeting my milestones, but tonight will be long again. I am very tired from a long day with the UT band in Utah (got in to Austin at 5 a.m. this morning), and I am stuck on silly bug. It’s almost like writers block. It should not take long to figure out, but I know that it very well could. I just need to preserver and get it done so that I don’t fall behind.

I am not yet as efficient with balancing all my school work for this year, but one of my major goals this semester is to not leave things to the last minute. Even though this is my fourth year, it is always something I have battled. Procrastination is a difficult thing to get rid of. Being very efficient with scheduling and getting work done is like working out. Once you are used to it, things always get easier to maintain. 

 

CS 371p (1pm): Week 1

Here I am back apart of the Downing class for the third time. Once as a student and second as a proctor, for his Software Engineering class. This will be the first time I have been apart of his Object Oriented Programming class. I am very excited.

Since June 2nd of this year I have been working with Multimedia Games Inc. I have been working as a game development intern and it has been fantastic. My mentor is has been incredibly helpful and educational for clean code and OOP and re-sparking my love for these areas. There are many cool things I have discovered this summer that I can't wait to learn more about. Hopefully I will be able to take them and immediately implement them in the work I am doing!

Into . . . August? and a new year!

I don't think I will ever try to make a consistent blog about my life on this website. One, because I am not a fan of writing all that much and two, I don't think people really want to read that junk. Who knows who is reading this right now besides my self as I write it. Oh well.

Into . . . August? I realize that my last post as "Into July", a month ago. I am fine with this. I will probably only write a personal blog every month. My main plan is to use this as a developers blog for any games I make. I hope to get on with that soon.

So what has happened in my life? Not a crazy amount, I have been busy pushing on at work. I am lucky to say that I get to keep working at Multimedia Games through this semester. I am currently set for 10/hrs a week, but I hope to push it to 20. I really enjoy working here but I do also need to earn money for next year. Getting off the parental loan soon. 

What else, I turned 21, that has been really nice. Finally being able to go out and have a beer or drink with my dinner. Its nice to be able to just go and enjoy a beer in public rather that stuck at home. 

Longhorn Band starts next week, for regular members. The section leaders have headed out of town early this morning for their own camp. I am very much looking forward to this year in band, if I get in again. I hope to play bass 2 this year. The past three years I have been on bass 3 and have loved it. It will be nice to play something different and keep things fresh. 

Into July

Well RTX was fun, but I'm OK with it being over.  During events like that you find yourself getting lost in the crowd and the large amount of peopling wanting to get attention from the RT guys. Its not exactly my style, but I am always happy to help with things which I why I keep going back.

We are now into July and the summer is flying by. The number of weeks left in my internship is getting lower and lower. Hopefully I will be able to turn it into something else. This job is enjoyable and I really love working with the people here. It is an awesome environment.

Rhythmic Force is starting to rev up. This week I will be working on getting a first revision of our warm up packet done. I just have to do it.

This Sunday is an all hands meeting for the Burning August team as we need to get ourselves organized for the rest of the summer. We have lots to do and need to get it done!

Now to get some work done. . .  

RTX 2013 Day 1 & 2

There is a reason why I didn't continue talking about the Game Jam . . . it ended up going up in flames for my team. On Sunday we lost about 8 hours of work which really set us back. Long story short, I am going to continue making the game because its a fun little project.

But onwards and upwards! We are now into day two of RTX 2013 set-up. There probably wont be one day that goes by without any fires to put out but that is half the fun. This year I am working on the tech team for the whole convention. Most of our work is these first two days with lots and lots of setup. Once the convention starts our job is to just keep things working, which is not necessarily a walk in the park. One of the fun things about this gig is getting to set up lots of expensive technology I wouldn't normally have access to. Its kind of like getting to mess around in a candy shop, for nerds.

We got here at 7 AM and already have issues to tackle and so its time to get on. 

Oh and happy 4th of July! 

Merging Coincidence . . .

This summer I am proctoring CS 373 under Glen Downing. Its has thus far been an enjoyable experience. The main thing I do, besides answer student questions, is grade the quizzes.

One coincidence that I ran into today at work was a bad merge. One of the quizzes last week in that class had asked what the two most common errors that occur with version control are. One that every one missed was lost changes from a bad merge. And that exact thing happen to me today.

Here at work we use perforce which is actually a pretty decent version control system. I have so far enjoyed using it and its interface is really great. One of the was you can stage all your changes to be submitted (perforce's term for a commit and push) is by "Reconciling offline work". That basically means that it goes through all the files and sees if any have been changed or new files that have been created. This is very convenient except that it breaks one of the great things about perforce. Whenever you want to edit a change you "check it out" which basically just lets others know that you are working on the file. That way, when they go to edit it you are aware changes are being made or have been made. 

Since my colleague had done the reconcile he had to the merge and had altered the code not knowing a previous change was made. This led to his bad merge and the changes I had made were lost.

When everyone got his revision (perforce's term for what is known as a pull in git) to get his edit, the lost changes broke our game. This led to lost time because the error had to be sorted out. It was tedious.

Moral of the story, be careful when you merge and understand the context of the other code you are merging with yours. If you need to get the authors of the outside code to help you do the merge if you don't know what is necessary and what ins't.