08.17.09
Posted in Programming at 2:23 am by Nick
One night, Dan and I were talking about Computer Science as we often do. We were trying to come up with some interesting things for Computer Club to work on or talk about. Unsure of what people we have and what their interests are, we decided to work on something that interested us and then see if we could get people on board with the project. ABE is the result of that conversation and many other considerations since.
–
Ideas we wanted to talk about and learn about: distributed processing, high performance computing, formal software engineering process and techniques, AI programming and emergent behavior.
Ideas we did not want to work on in-depth: graphics programming, user interface creation and design, user input.
When Dr. Gray allowed us to borrow the LittleFe, we instantly decided to use it for this project. This provides us with a high performance, transportable medium to do our testing (although I would later assemble a simple, low-end machine to run smaller MPI-emulated simulations). After much discussing, and even consideration of OpenCL and/or Cuda, we opted for an MPI (Message Passing Interface) based application for this project.
The goal itself is not to make a video game, but a large-scale battle simulation involving thousands (hopefully tens or hundreds of thousands) of units. We want a lot of units to readily see the effects of AI changes and to stress the system processing the updates. Ultimately a simulation will consist of several players, each with a defined rule set (which will be simple and defined by us, nothing too fancy) that will govern their units as each side faces off. We hope someday to have several unit types, terrain considerations, random catastrophic events (meteors, nukes, tornados, etc), and an event tracking system.
ABE will have two core parts, the simulation and the player. The simulation will run on the LittleFe or some medium and will load the rulesets, run the simulation, and then output information step-by-step to text files. We will then have a player that can read these generated text files and somehow visually display each step so we can actually see what is happening. The player should be able to play, pause, and advance one step at a time.
So what does this give us? Anyone who is interested but doesn’t know how to program will be able to talk about and influence our decisions and design, and even create their own AI rule-sets. This can lead to a lot of student interaction without a lot of domain knowledge. We realize not everyone wants to get into the technical aspect, so we want to take that out of the picture and talk more about our design, process, and issues. We figure this will make the project more marketable.
As the software process is an important learning part of this project, we plan to make extensive use of things not usually seen in student projects. DISTek, my employer, has graciously agreed to let us use their conference rooms for design and code reviews, so we will try to take full advantage of this. I don’t expect many people who will help with this project to understand the code I write, so their ability to review it effectively may be low, but it is a chance to help them learn none the less. The project is hosted in a Subversion repository and we will try to keep it up to date as possible. If things go well we will probably release the code under GPL or a similar license and allow people to use it once we have a stable, working version. Also, as we are following a more formal software engineering process, I personally will try out CPPUnit and attempt some test driven development. This is something I personally am interested in and would like to try on something beyond homework-scale.
Currently I am set to design and write the simulation. Dan is tasked with creating the player and, perhaps more importantly, setting up the LittleFe in a way we can use it. He is more of a Linux junkie then me these days, and he seemed quite interested in it so it should be fun for him. I personally can’t wait to dig into MPI and get things moving, but I don’t want this project to fall on its face. Thus, I will probably spent some large amounts of time designing things once I have a good idea how to setup the simulation correctly to take full advantage of MPI.
Permalink
Posted in General at 1:56 am by Nick
Why hello there, it has been a long time!
The start of school is just around the bend, and my life has been buzzing as things start to pick up again. In preparation for school I have found myself gearing up in several ways to make sure it is a successful semester:
Despite my normal frugality, money has been flowing quite steadily as I pursue quality and success in my life. Back on January, this meant buying a new car so I could avoid paying ~$2000 a year to fix a ~$3000 old luxury car. And I do mean new, as in 2009 Jeep Compass new. I have been absolutely happy and satisfied with my decision and find it quite enjoyable to drive, so I consider it a success. However, I must admit that if I knew my CS scholarship was going to vanish I would have forgone the car and used that money for debt and tuition payment instead. On the other hand, driving a car backed with a warranty and knowing each and every mile put on it was by me is a very, very good feeling. I used to think new vehicles were a huge waste of money due to depreciation, but I realize now that if it helps put your mind at ease (as it does for me) then it is money well spent, especially if you keep it for a long time as I plan to do.
My brother and several friends started buying computer equipment from NewEgg, so of course I ended up joining the trend. When our school received Win7 RTM copies and keys, I couldn’t help but throw it on my laptop and see how it ran. Considering it is still unreleased to the public, I am incredibly amazed with it’s state and the amount of polish. And, as XP starts to show its age in size and performance, and I became increasingly dissatisfied with my computer’s setup (two 37GB 10k RPM drives holding XP/Steam games, and then a larger 160GB drive holding programs and other bloat) I decided to bite the bullet and reorganize with Win7. I decided to get two new 500GB drives and put them in RAID 1 via fakeraid on my motherboard. This left me with enough spare parts to only require a case, power supply, and motherboard to build a cheapo computer, so I jumped at the chance to finally have a dedicated Linux machine (more on it’s intended use another time) at the cost of $130 or so. I ended up buying new hard drives, more RAM for my desktop, more RAM for my laptop, an external hard drive enclosure, a KVM switch to switch between my two desktop computers, and more. As I spent a night or two piecing everything together, I was reminded of just how much I really enjoy putting things together. It was a very fun and satisfying experience. Sadly, I have no plans to do any more computer hardware flip-flops or buying in the near future.
To prepare more for this school year (and fill a void of wall space near my window), I bought a brand new wooden desk from Target.com. It is quite stylish, well priced, was easy to put together, and seems pretty sturdy. The theory is if I have a dedicated homework space I will be more productive. We’ll see how that goes. It is a problem I’ve “solved” before, but I ended up switching from my old desk to the desk I bought for homework only as a computer platform to facilitate more monitors.
A month or two ago, I also decided to become a legitimate Pandora.com customer. While 40 hours a month is a lot of free music, I find myself listening to Pandora at home and at work (meaning I blow that in a week easily). I figure $36/year is fairly cheap compared to what many people pay for music, and I am quite satisfied by the service and use it regularly.
After a near eight-month break from the game, my brother and I have reactivated our World of Warcraft accounts. This came about only because I have found many of my coworkers play together, and the only reason Dan and I quit in the first place was because we had no one to play with. So, in league with the title of this post, we spent this weekend playing like the good old days: gearing up with heroics. I imagine with limited playing the game will stay fun for quite a while, though I have started my payment cycle on a monthly basis just in-case it starts to conflict with schedule.
–
#include “std_blog_apology” // Clever, eh?
I spend an ample amount of my day thinking and analyzing everything. Current events, health, exercise, programming, school, work, food, games, cleaning, economics. My brain is constantly crunching the angles, and when I stumble upon something I find interesting and wish to explore more it makes it into my draft post called “Topics to Blog About”. As summer quickly comes to an end and my list of things to write about is in the dozens, I figure it is time to start making this whole blogging thing a bit more routine like it used to be. Even if there happened to be few, if any readers, I often find myself coming back to the pages of this blog to reread my analysis of topics and refer to whatever started the post in the first place. Plus, it is a convenient place to store information I use on occasion (such as the hardware information for my computers) or would like to give out to people (gift list).
Given a new schedule that will free up more time for stuff like this, I hope to be posting more. Lets see if I can keep that promise!
Permalink