Saturday, December 12, 2009

Planning for 2010

Going into 2010 I've decided to do more planning. The number one thing I've learned in my professional career in the last three years is proper planning goes a long way. You just can't bring anything of size or merit together without a full idea of what your doing. I like to sum it up with the statement that you have to know what complete means for your project. You should also be clear about what the costs and benefits are. It's alright if the only benefit is fun!

This year I have made more progress than ever in some areas, and the consistant 'nothing' in others. I do have my subversion repository pretty well populated, and I have my personal wiki up (Confluence). What I don't have is anything really completed. This is a theme I have visited before. It lowers my value to employers that a lot of my personal projects have never received that final layer of polish. I'm very good at the planning, problem solving, execution and emergencies. But when it comes to putting the final details in place, I always seem to have wandered over to the next project already.

So moving forward, I want to set more clear goals for 2010. They need to be goals that can be broken down into smaller tasks that I can complete. So in an effort to be ready to go to GDC 2011 with a wonderful resume; I need 2010 to really count.

I'm getting married in August, with a long honeymoon. This will eat up a lot of the year, but we have also handled a lot of the planning already. We're way ahead. If I can stay ahead of my responsibilities, than I can have time for this. This is my passion and I finally feel I can throw myself at it. My debt is paid off and I have a great job (with a lot of offers for other jobs).

I just need a clear plan and realistic goals. I know for sure that I will be featuring more of my project work here. I want to make some posts and share some of what I'm doing. Be a little more relevant instead of just using this as a private notebook. This post will be followed not with my plan, but with my first post following that plan. The plan will go on my Wiki.

Monday, October 19, 2009

BlockBreaker Revisited

I've been working on "BlockBreaker" again, and having considerably troubles. I haven't been able to clear up the blurry/choppy movement of the ball. Further, even after spending a whole day on collisions detection, it still isn't where I want it to be. After some considerable improvements to it, I am now to the point where I'm looping through all of the objects and testing them for collision with the ball. This obviously isn't correct. I will have to learn how to find the nearest block and only test that one. So there is more learning to do.

Besides the problems, the game is working very well. Collision works great when the ball does not strike more than one block at the same time. I can't simply calculate 'first hit', because the first hit may not be the closest.

I want to clear up the problems, but I'm also happy with the progress. The game needs sound and a graphical tweaking. The only real engine coding left to do is high score and the transition between levels.

I've actually considered designing an rpg style breakout game, similar to Puzzle Quest. Breakout does not need to consist only of hitting a ball with a paddle.

Tonight for my coding time, I'm going to look into finding the nearest block, and then into smoothing the ball animation. Maybe I'm still timing everything wrong.

Monday, October 12, 2009

Work on Break Out

This weekend I pulled a version of Break Out I started in 2001 off of a really old backup CD and checked it into my subversion repository.

I learned quite a bit by reviewing the source code. Most importantly was that there wasn't much code at all. This was a single Java file along with a matching HTML to show the applet. This was important for a number of reasons; the first being that it did not seem to contain as much effort as I remember. Reading the code I realized that it probably was only a few hours work, if that much. The size of the code struck home to me that I did not put as much effort into these early projects as I had thought. I seemed to have given it a bit of a try, and then moved on.

The source code for this old breakout, did not user any kind of timer, it simply ran and painted as many times as the main loop could run; it was timed by the Thread.sleep(x) method. Input was also handled by a direct input method; pressing the right arrow button moved the paddle to the right by it's acceleration. Further the constants for the states were defined, but there were no states. I couldn't help but wonder if this wasn't the latest version of this source code, since I did not have a repository back then.

I decided that this was one of those projects that should be completed. At first I simply cleaned it up a bit and it became a fun little game. Of course, this reached a point where I had simply made 1,000 lines of horrible source into 400 lines of alright source, that simply played the same half-game. From there I added my KeyWatcher, MouseWatcher and Timer classes to the mix; introducing a real game loop, better input and locking into 60 fps. I know based on my recent reading that this still isn't the optimal way to handle frames, but it's block breaker and it will never be heavy on the cpu, etc.

I stopped there and got it checked into subversion, then made a page for it on my private wiki. After writing out a bit of a design, I returned to the code and tore out all of the game objects. Although component (aggregate) based game objects are all the rage, I went with a simple hierarchy involving a base class and an extension for each of the types I would need. Proper state was added, and not based on constants.

I spent the rest of the weekend working on collision detection and resolution. I have never really tackled this problem; I've always tried to do a simple approximation of things bouncing and it has never worked. There was a considerable amount of contemplation on the effect of this on other projects. How many projects had failed or been abandoned because I couldn't get this part right?

This weekend I forced myself to sit and do the reading, review the math, and correctly bounce the ball off the walls, bricks and paddle. With this done I was very proud and felt like I was finally approaching projects correctly. I still need to go back and group bricks (two bricks next to each other shouldn't run a separate collision), as well as add a coefficient of friction to the paddle.

The game needs graphics, sounds, actual stages (it just has one) and some fine tuning, but it is hardly the toy script I recovered from the CD.

It's good to be picking up old projects and finishing them.

Monday, September 7, 2009

More progress?

Even without a real workstation, I continue to make progress. I have gotten my wiki setup on the server. I used the copy of Atlassian Confluence I purchased during there donation week. $5 is a deal for a five user license.

I have also started using Calibre and reorganizing my books. I refreshed my book repository on my prs-505 to be smaller and more targeted.

My workouts are improving too, and I plan to see the trainer this week. I need to get protein first thing in the morning. I need to completely improve my diet. 

I am getting anxious about paying off my credit cards. I will suddenly have money to tool with. I'm thinking a boe bot is a good start, but I'm not sure.

Last night I ordered the ram for my 900a and my sling pack. Everything should come together if I can find a suitable iPod or pmp.

For now, it's the holiday and I'm chilling out on the porch. A completed project, btw.


Saturday, September 5, 2009

Organizing?

Interests:

  1. Robotics
  2. Programming
  3. Games
  4. AI
  5. Speech control
  6. Home automation
  7. Cars
  8. Fitness workouts, etc

Fitness is the only really active one, with regular visits to the gym.

Projects do not need to be profitable, but it would of course be nice. It's always been a good motivator for me. Getting to work with others is pretty important.

Work on ai through involving it with the other projects, the same with programming. Cars is the expensive project and requires planning, probably prettyy stale until we get a house. So it comes down to speech control, home automation, games and robotics. I need short and long term goals in each. Possibly multiple projects in each category? Home automation is also hard to really have fun with until we own a home.

Think I will start with some chores and more preparation on the travel kit. Going to hit the bank, check my finances and search for my messenger bag. Thinking I need a new duffel as well.

Will continue this when I get back.

Monday, August 31, 2009

Test post to my blog, from g1

Plans?

I've been doing some more thinking and there are some things I would like to do.

What I realize is that the goal cannot be to complete the project, the project has to be part of some goal. I don't have that goal, and I need it/them. 

When I figure that out, I'll be able to move forward.

I am thinking I have things I still want to do, mud wise; and I'd like to join the spring rts project. I've also been considering a web based rts. something small, but that would be fun and quick. It would show off my abilities, and look great on my resume. i It would  also be very personally rewarding.

I have to do further thinking about this.