Friday, April 29, 2011
The Work of a Project Manager
Thus far, the project has gone considerably well.. Its not every day a group of 7 high school students pull off a professional quality game in 4 months, so that's not what we're aiming for. We did challenge ourselves to making a 3D game, so three team members are dedicated to 3D modeling (and those three have turned out some models that blew my initial expectations) As the project got started, we only knew we wanted to do kind of a spin off of Beowulf, so one person worked on writing a kind of storyline, dialog scripts and stuff like that.
At the beginning, from week 1, we had really no clue of where the game was headed. We had no ideas for a combat system, we had no ideas for what the game would really look like which made it hard at first. For team communication outside of class, and also for record keeping and kind of a history, we used a wiki over at Wikispaces and this is where most of the team has been able to effectively communicate their ideas and overall, we have been able to pull something together. The wiki actually started on a school website, and our teacher had set it up for us, but that wiki was limited, and it was old; so we switched to Wikispaces.
As ideas started to develop, the busiest team member was the story writer. Our story writer was perfect for the job, because his goal was to become an English teacher after he finished school, and he has written so many things in his time. The 3D modelers and artists didn't have very much to do at first, but that was okay as they started out learning the ins and outs of Blender One of the guys on the team was originally going to help me out with programming, although he would be more focused on scripting and stuff. Early on, however, he decided he would rather work on level designs. As if an engineer, he got right to work on drawing levels, the GUI and the menus on engineer's graphing paper, and along with that he also got started on designing controls and working on the mechanics of the game. Me and the only other programmer, similar to everyone but the story writer, didn't have much to do as the project started off, so I kept working on the engine I had previously started, hoping to design it with a focus on this game rather than the reusable engine I had previously dreamed of. The other programmer was a bit new to Python so he continued working on learning Python, although, a quick learner he was, he was sitting in the back with me and me and him decided he would do best working on the GUI.
One of the things that me and my teacher found most effective so far for getting the other team members to work is giving out a prize each week to the student who has contributed the most (whether it be some really nice models, lots of constructive wiki posts, or in general, a lot of quality work finished). As project manager, I have felt that it is my responsibility to keep the team on task, and present a goal for them to try to achieve (because as procrastinators, we all know that none of us will do anything without a goal in mind!). A tool I found to be somewhat effective is something called a Gantt Chart. I have never been too much of a visual person, but a Gantt Chart is perfect because it is a one stop reference for deadlines, a timeline, and it helps me see what tasks are more important, based on what other things depend on those (for example, the first stages of modeling and engine programming are very important in order to get to the first testing phase). Another useful tool I have used is a mind map, and using XMind I was able to create a mind map with a printable outline. I found that this was really only useful to me and the GUI programmer because no one else really has any mandatory requirement to care about the design behind the engine.
If I had to say anything to someone else that wants to be a project manager, I would say two things. 1) ask me in a few years after I get professional experience in this job, and 2) make sure your team has a clear goal of what you want to achieve!
Sunday, February 20, 2011
A beginner's philosophy in fixing problems in Linux
Anyways, I was having some problems with CEGUI... and I fixed them. Do you want to know how? I upgraded to a newer version of OGRE and CEGUI... in the process I also reinstalled, but I don't truly know if it was the upgrade or the re-installation that fixed the problem. This reminds me of my first days in linux though. Back before Ubuntu 10.04 was out, in late 2009, I installed Ubuntu 8.04 thinking it would be better for me as a beginner (seeing as it was the "LTS" which I understood to mean perfect). I don't exactly remember what problems I was having, but upgrading to Ubuntu 9.10 fixed them. Later, (and again I don't remember the specifics), I had experienced some problem with my graphics card in Ubuntu; needless to say, updating the driver fixed it for me. I could probably name a hundred other times upgrading software has fixed a problem for me (or downgrading from 64-bit to 32-bit), but for the sake of your time I won't.
As far as stuff in OGRE has been progressing, I promised screenshots so here is one. Overall, my progress has been getting stuff to work and creating an overall framework. This screenshot is something I put together while testing animation, and some of the entities are left over from when I was running the application for the first time.
Sunday, February 6, 2011
The Evolution of the Supersonic Game Engine
Well in Colorado, where I'm from, we've had some nice weather... It was only like -3 degrees (Fahrenheit). Of course a few areas such as Evergreen seem to have experienced temperatures of -20? And I did not get one snow day from Red Rocks! Awesome! The high school I go to did close for Tuesday and Wednesday, so I had a little bit of time to do extra homework then. Due to that, yesterday I had a good 10 hours of coding.
To be exact, that was seven hours of coding and three hours of debugging. I can't get into the habit of testing code as I write it, so I sit down and just code for a few hours without running any of it. I have to admit though, I have discovered I absolutely love Python for one big reason. I remember writing a few things in C++, I spend a long time designing a class (I never liked using UML, I would design it by writing class definitions and comments) and then I would write the class, and test it. The testing process involved practically coding an entire project to test each element, and this is why I don't test while coding. Well in Python, after writing the class, testing it is as simple as opening the command line interpreter, and typing code such as the following:
>>> from SampleModule import SampleClass
>>> import OtherThings as ABunchOfCrap
>>> import SuchAsOsOrTimeOrSys as YouProbablyNeedThese
>>> sampleObject = SampleClass (param1, param2)
>>> sampleObject.doSomething (param42)
>>> sampleObject.rootForPackers (theyAreTheBest)
>>> sampleObject.rootForSteelers ()
Traceback (most recent call last):
File "", line 1, in
NameError: name 'steelers' is not defined
>>> Well I guess that was biased, but you get the point. I did have a good time debugging. I made myself slightly familiar with pydb, and then I learned of the existence of pdb which served my purposes just as well. Part of the debug process for me though was trying to figure out why the log manager didn't work. I had perfectly working code when I started, and then when I started debugging, I spent about an hour trying to figure out why I kept getting an error message about some kind of threading.
I haven't figured out how to fix the code and make it work, I just commented out all the places I send messages to the log manager. I did make progress with at least an error message to refer to when I tested the project in Ubuntu. I switched to Windows to see if the error happened there and--well I didn't get any kind of error message, I did get a message to the effect of "'python.exe' crashed. Sorry. Checking the internet for solutions........ No solutions; sucks for you! Bye bye loser!"
After commenting the code out, the application wouldn't display anything on the screen for some reason.. Well I was using the Borg pattern and in order to call functions from my framework (which is where I used the Borg pattern) I would do something similar to
OgreFramework().someFunction (someParams). While working through pydb with the code, I realized that everytime I call OgreFramework().something, it runs OgreFramework.__init__(), and in there, I set every single variable to 0 or False or "" or [] or {} or... well you get the point.I did the variables as such so I could keep track of what variables I was using, but what that did: 1) it would have caused a huge memory leak if there was no garbage collector... Heck it probably still caused a memory leak somehow and 2) OgreFramework.m_pRoot which I stored the OGRE.Root object in was a blank reference; when I asked it to render the scene it threw an exception that I didn't catch. Well I am still able to keep track of variables as such, I just moved all the 'definitions' outside the __init__ function, and when I call the inherited classes __init__ function, I set a flag to see if I had already done so. What I should probably do is instead of calling OgreFramework() everywhere, say framework = OgreFramework() framework.doSomething()
Well I promised screenshots, but right now I don't have anything pretty, just the media that comes with OGRE, like the ogre head, the robot, the ninja, etc. If anyone has read this, and thinks I could possibly benefit from some better design problem (that might fix my problems with the Borg pattern) let me know! This week, I have a framework and state manager that at least works, and I have a pretty good idea of what I will be doing for the rest of the project. Instead of making a "game engine," however, I'll be making a physics demo to 1) submit for some scholarships possible, 2) better my understanding of physics so I can do well in my Calc-based Physics class, and 3) I can get more acquainted with OGRE and Python. I will then convert it into an engine, but I would much rather move the whole thing to C++ if I make an engine.
Friday, January 28, 2011
Supersonic Game Engine Week 3
Well, that aside, I would like to update anyone reading this on my progress. This week, I didn't do a whole lot of coding for the Supersonic engine, but I did quite a bit of reading. I have read about quite a few different game frameworks both specifically for OGRE, and unrelated to OGRE at all. Obviously I found those ones related to OGRE quite a bit more interesting and helpful, but I picked up some basic concepts (Singletons and threading) from other articles.
One of the most interesting articles I read was the Advanced OGRE Framework tutorial on OGRE's wiki. It is basically a code listing for a nice framework for OGRE applications, and appears to be quite useful to me. What little coding I have done this week was porting that framework to Python so I could use it myself. That framework includes with it a state manager, but I opted to write my code based off (not copying word for word) a different state manager also found on OGREs wiki. With that, I now have working input!
One thing that will inevitably be essential to the creation of a game engine is a Singleton. For that matter, it has definitely been a little challenging trying to figure out how to make a singleton in Python, because it's not a built in language feature. Luckily, this was made easy by another article I found: (link found on python-ogre wiki) Singleton Metaclass. Okay, I will admit I have not taken the time to look that over and figure it out (and considering it's simplicity, it seems like it might be pretty easy; don't forget: I only started programming with Python a few weeks ago). It sure looks promising though.
My plans from this point forward are still to get some kind of simple game in the works, featuring input, terrain, movement, animation, collision, game states (menu/pause menu) and a level manager. I have never ever used shaders before, and I barely even know what they are, but if I'm up to the challenge in the coming weeks I might even check out shaders and make some kind of weird metallic guy, or I could simply add a body of water; it would be cool to have a shiny rainbow tree though! For this week I'll simply work on animation.
I sure hope I can manage when it comes to the point of creating my own content. Anyone that would like to help me with that is welcome to comment and let me know.
Friday, January 21, 2011
Supersonic Game Engine Week 2!
Anyways, as far as my game engine goes, I feel like it's been a good week. I haven't put in a ridiculous amount of hours into this project, but I did come up with a name, and I consider that to be a pretty significant amount of work. The name, by the way, if you didn't get it already, is Supersonic. One of the games I kind of wanted to model was the Sonic games of late, as they are platformers obviously. Another game I am looking at is Super Mario Galaxy (great game, haven't played the sequel yet but I hear it's even better).
Oh, don't worry, I did a lot more than just come up with a name. I also broke my python-ogre build by doing something.. not sure what. Well to cut the story short I reinstalled it and it's all good. And then Andy Miller (who apparently does most of the work on the OGRE Python wrapper) updated the SVN trunk with the latest version, 1.7.2 which probably supports Python 2.7, but I'll stick with 1.7.1 and Python 2.6 for now.
Anyways, on to the real details of my Supersonic 3D game engine project. Last week I vaguely talked about what my plans were for this project, now I will vaguely talk about what my plans are. For the most part, my number one goal for this semester is to get something that works and that I can show off. In order to do this, I am probably going to use a mix of different libraries. First and foremost, and most obviously will be OGRE, but along with that I'll be using OIS, and I would like to use CEGUI but that depends on whether or not I figure out how to make it work again (because I also broke it? or it just refuses to reinstall; I needed to change the install options so I was reinstalling it, and suddenly it absolutely refused to install claiming some version discrepancy of libtool, of which the script was written in 2.2.6b and supposedly I have 2.2.6... but in truth I actually have 2.2.6b so I don't know what's going on there). Anyways, I am planning on using some kind of physics engine to start with; a couple of possibilities are ODE and Bullet, both of which integrate well into OGRE which is nice.
In the near future I might be adding an AI library, and I'll have to do something about sound, but I haven't looked into possibilities for either of those. I certainly have the resources to test and therefore develop networking capabilities as well which I might also find some library to handle for me. As I get further into the development process, I would overall like the project to have it's own physics engine and AI library and such, but I wouldn't bet on that just yet. One thing that will definitely help in the long run is to make the project extensible by plugins, in case one of the libraries I use by default is discontinued.
Well as for what I'll be working on this week: I would like to make my own working InputManager (which relies on OIS for the moment), and I'd like to be able to create a scene with a controllable, animated character. For the most part I'll simply be using the resources that come with OGRE like the robot mesh and animation, and the terrain, etc. If anyone reading this would like to check out what I have, and help me make models and other art, that would be greatly appreciated. The art would mostly be used to demonstrate the capabilities, and for testing purposes, obviously. I can survive with the resources OGRE comes with by default though, so this isn't urgent.
Well, have a good week, and tune in next week for another exciting and epic tale of Supersonic Game Engine development!
Friday, January 14, 2011
New game engine project
This post specifically is about that project. The class is going over Python, and considering my previous programming experience (years of casual reading book and articles, and once in a while playing with sample programs) Python was extremely easy for me to pick up. Something I've wanted to do for a long time is program a 3D game engine. After all who wouldn't want to do that? Well on second thought, I guess the people interested in making their own games would rather use an engine which has already been made, and matured.
Anyways, the 3D platform game engine has yet to be named as you may have noted. Right now I am building it in Python using the python-ogre library, which is simply a Python wrapper for OGRE3D.
My plans for the game engine this semester simply involve getting something that works. In my mind that entails getting the following things up and running: terrain, movement, animation and collision first, then states and a menu, and level importing. Basically, by the end of the semester I'd like to be able to import a level and all associated objects and create a 3D scene with a player (shown in third person), a couple of enemies, static entities and a couple of other dynamic entities. I would like to be able to do some very simple scripting (and with Python, this will be easy!) for the enemies, and possibly triggered events.
After the semester is over, the number of options I have to do with the project could be represented by a HUGE tree. I think the best thing to do would be to port it to C++, set up a project on source forge, make a website and then possibly advertise it a little bit to recruit a couple of other developers to help me. Obviously this is going to be an open-source project and I will primarily be developing from Ubuntu Linux. I'll have more details on future plans as things progress; I wouldn't want to build up too many dreams and then lose focus in the project. This really is a big thing for me and I hope later to make it a big thing for the world! After all, it seems that Linux and the open-source community lacks a little in the gaming market.
Saturday, February 20, 2010
C++: Forgotten Syntax
I want to call attention to a few things in C++ that personally annoy me, the things you and I, and millions of other C++ programmers commonly forget, resulting in a million compile-time errors. First of all, the ever-so-beloved semi-colon. Who would have thought that one small semi-colon has the power to completely change the output of a program? Secondly, brackets. It is common to forget the ending bracket, but how many times have you forgotten both the beginning AND ending brackets? Also, what are the unseen consequences of forgetting a "delete" command?
Well, the most common problem is probably forgetting semi-colons. This is usually quite easy to do, especially after typing out a long statement, but with practice, it'll begin to be similar to a second nature. There's really not much I can say about semi-colons.
In my opinion, the most annoying problem, and second most common (to semi-colons) problem is forgetting brackets. Every once in a while, I think, "You know, I don't need brackets here, it's just one line." But later I go back to that for loop or if statement or whatever, and I add a couple extra lines for some reason, but I forget those damn brackets!

The above picture is a good example of being able to write an if..else statement without the use of brackets. Now notice the difference the number of lines makes:
This code looks right doesn't it? Wrong, it is tricky to tell because of the indention (which I had to add myself, the editor wouldn't for me). A lot of times, if you are sure you are going to be typing in more than one line, and probably most of the time no matter what, you are in a habit of adding brackets, but when you go back to add a line or two, you totally forget about the brackets. Again, with practice, most people get better at remembering these things.The third, and most important, and least noticeable problem is forgetting to deallocate memory, which is why you really shouldn't allocate pointers and that crap in the first place unless you absolutely have to. Has anyone here every ran a program, and then ran it again later without restarting... and then ran it again later, and again, without restarting? Well after doing so, did you notice your computer was extremely slow? So you open up task manager and kill every last process you can think of, and then you are down to 25 processes yet your memory usage is still at 93%. What's happened is called a memory leak, and in short... using new without using delete causes this. And even larger, using a million news without deletes causes this in a large scale.
Let's suppose you do remember your delete statements, you allocate memory for a bunch of arrays, array1, array2, array3, etc. and then you make absolutely sure you remember to delete them, so you have delete array1; delete array2; delete array3;. Well sorry to break it to you, but that's not gonna cut it. That's going to delete the starting pointer (the pointer pointing to array1[0], and array2[0], and the rest) but it won't delete the entire array. To fix this you must use delete [] array1;
So there you have it, now you will be extra careful to remember those semi-colons and brackets. And hopefully you don't have to think about deallocating too many memory slots.. Besides, allocating them in the first place is already some fairly advanced stuff that you really don't need to be fooling with unless you know what you are doing. Typically I don't even think of allocating memory except for as a last resort... which means I haven't ever actually done it in my own project where I'm not following a guide that tells me to use new and delete!
Have fun!
Saturday, February 13, 2010
Mass Effect review
Well, anyways, the thing about Mass Effect that I really enjoy is the fact that you play it once, and you are like "heh that was pretty good" then you play it a second time and alter the settings just a tad bit, and then you find yourself thinking, "I don't remember this part!" and then a few familiar things happen, then you get some crazy achievement, and you go like "wow how did I not get that achievement the first time!" This is obviously, though, a feature that most role-playing games have, called re-playability.
Another great thing is the controls. You can assign abilities to certain hot-keys, and it's got a quick-save feature! Plus it has an instant pause you can use during combat to assess the situation a little bit, and you can also switch weapons and use abilities from that screen. One annoying thing is the automatic cover system. You'll want to be careful when walking up close to walls and things or you'll turn around and duck... while your enemy is in a critical position and it'll just take 3 shots to down him, and now you are stuck up against this stupid wall! The cover is sometimes useful when you are facing a ton of enemies, your shields go down or your weapon overheats so you take cover and use some first aid or wait for your weapon/tech/biotic abilities to recharge. It would be a lot better if there was a hotkey to do this though, instead of automatic.

My absolute favorite part of this game was definitely the storyline! Drew Karpyshyn was even good enough to write books that extend the storyline for you and really make you feel like part of the action! I don't want to give you too many details on the storyline, to avoid spoilers and mad people, but I will say that it's an awesome storyline. You can start out as a male or female, you can select your background (but that only changes one sidequest and gives you a couple extra renegade/paragon points) and you can select your class. The class part is the best, I first played as a soldier... that was pretty fun, then I played as an infiltrator, that was ALSO pretty fun, but I couldn't use assault rifle/shotgun :( (you can after unlocking an achievement like making 250 kills with a shotgun or assault rifle, the same with sniper rifle) My favorite, was the sentinel. It combines biotic and tech powers, so no weapons (unless you get that achievement I mentioned above) but biotic/tech is like pwnage!
Mass Effect was a great game, AWESOME voice acting (well female shepherd was awesome, but male shepherd was kind of dull. Everything else was also pretty good but I didn't hear it during EVERY single conversation so I can't put my finger on anything else.) great storyline, great re-playability. The graphics weren't exactly up to par, but the biotic/tech animations were still some pretty great stuff! I give Mass Effect a 9.5!
Saturday, February 6, 2010
Synergy (software) review
Well multitasking, as most people is hard without one of two things: Alt-Tab and multiple monitors. The multiple monitors part is different, but it makes things a whole lot easier, because at one time, I can see this document, my calendar, and in a tab a thing that tells me I have one unread message (wonder who that's from.. oh well I'll check it after this) and I also have a quick play/pause button for my music. When I'm writing research papers, it sucks having to alt-tab between browser, read a little, alt-tab back, type a little, etc.--It's nice when I can just turn my head a little, read a little, turn my head BACK, type a little.
Well now that I have three total monitors, it also means I have two keyboards and two mice (mouses?) and half the time, I'll start typing on one keyboard and then I realize I'm typing on THE WRONG KEYBOARD! Yes, once I even shut down the wrong computer using keyboard shortcuts and ended up losing about half an hour's worth of work opening all the applications I was planning to use! <--That's actually an exaggeration. With Synergy I have solutions to every problem every presented in this universe, in fact I considered nicknaming it 42. You know, the answer to the universe and everything... oh whatever it was a joke, anyways, with Synergy, I can move my mouse from my desktop to my laptop AND BACK!!! That part totally blew my mind away. Then I realized I could copy-and-paste from one computer and back (goodbye netpaste, you are no longer needed) and I could move DOCUMENTS from ONE COMPUTER and back!!! Wait let me test that, just a second.. ok you can't move documents from one computer and back, and that is why you use shared folders. But I thought, this is the sickest thing ever to happen to my desktop and laptop, it's like they've become married, they have joined souls and become one. Well now I have seen a problem: I can't use alt-tab to switch between firefox on my laptop and openoffice on my desktop. Well simple, Synergy has shortcuts which let you switch the keyboard/mouse between computers, and problem solved.
Well Synergy is a really great piece of software, it's been very helpful. I'd give it a 5/5 easily. I think you can connect more than just two machines together too, you could probably have 5 or even 10 computers together :D Oh and the cool thing, do you have two computers because you like Linux and Windows? Well no problem, or maybe you like Mac and Linux (such a Windows-hater!) well no problem! Synergy works across multiple operating systems at the same time :) So in conclusion: do you have two computers? Good, get Synergy. Bye.
Saturday, January 30, 2010
February Anticipated Games
Since November, we have only seen a few nice game releases, including Dragon Age: Origins and CoD: Modern Warfare 2 of course. There was also James Cameron's Avatar: The Game and DiRT 2, and a couple of other games, but Christmas seems like a dead season for new games (but don't get me wrong, everything shows up in a big gulp right before Christmas) Well February seems to pick up the pace again. Mass Effect 2 is an amazing game (I have only read countless articles and watched tens of YouTube trailers) and probably to only notable game release of January 2010.
Well now we are in February, and if you are looking for a new game, you've come to the right place. Several games have been anticipated for a while, and are finally being released in February. These games include: Star Trek Online, Bioshock 2, Everquest II: Sentinel's Fate, Napoleon: Total War, and even though it is being released on March 2nd which is not in February, I have decided for the sake of this blog entry to also include Battlefield: Bad Company 2 because it is just that epic! I have not been following the release of games for very often, but in my own research, I have noted down that a lot of these are sequels, or expansions to existing games. Hopefully you were able to notice this too because, well... except for Star Trek Online and Napoleon: Total War, all of those games include a '2' or 'II', and in the case of Sentinel's Fate, it happens to be an add-on to a sequel!
Now notice that one of the games that doesn't include a 2 in it is Star Trek Online. That, however, is totally fine! I mean who wouldn't want to play a game called Star Trek after seeing the movie? Well not me because I'm not a huge fan of online games anymore: Either you want to keep doing the same thing over and over, or everyone else wants to do the same thing over and everyone else is really good AND you either suck at the game or you get addicted.. In other words, they are addictive. Anyways, Star Trek Online looks like a pretty sick game. As far as I can tell from previews, there is quite a bit of combat, and something I thought was really cool is the fact that you can create your own species!!! Wouldn't that be awesome? Create a species, and describe how you came into the galaxy (like you discovered some Mass Effect relay in the 22nd century... Wait that sounds like the humans in a game I like called "Mass Effect"!) Star Trek Online has revealed that the monthly cost will be $14.99, similar to several other popular MMOs. It was created by the same people that brought you City of Heroes, City of Villains and Champions Online so it should be an interesting game!
The other game that doesn't include a '2' in it is still a new addition to an ever-so-popular series, the Total War series. This is an awesome set of games, albeit strategy games (I haven't grown accustom to this genre of games, but it still looks awesome anyways!) A new feature present in Napoleon which wasn't included in the other Total War games is a new multiplayer mode. While I haven't played many strategy games, I certainly don't remember ever seeing a multiplayer strategy game before! It may just be because of my recluse-ness to those types of video games. Anyways Napoleon: Total War is enticing to me, just the fact that there are several gameplay modes and historic battles you can play through (my History class has turned me into a little bit of a history fanatic... Yes, I have started reading "U.S. History for Dummies")
Now we have two of those games out of the way, I'd like to talk about Bioshock.. TWO! Bioshock in my opinion was a really interesting sci-fi game. The website is a real treat to the eyes, but I'm almost certain the website is nothing compared to the game. The original Bioshock had some really great graphics, an interesting storyline and some unique features creating a gameplay which you couldn't experience twice. Now the sequel, Bioshock 2 claims to take you back to the underwater city of Rapture to re-experience the unique elements of the games setting. The game also features multiplayer modes, which obviously don't appeal to me because I suck at multiplayer BUT that's probably one of the best features in the game, I mean who doesn't enjoy shooting the crap out of other people online? 2K Games did a great job with the first and they sure got my attention in this sequel.
The other game worth mentioning is Everquest II: Sentinel's Fate. No, I didn't forget Battlefield: Bad Company 2, I am just not writing about it this month. That is for next month. Anyways, the Everquest game is a nice MMO for multiple audiences, it incorporates those nice fantasy features that everyone loves, and of course it's got a bazillion expansion packs. The only game I would ever pay monthly for is a game that is always being improved on. (Imagine paying even a dollar a month to play Half Life 2; it lasts for a while but after playing it for a year or 6 and only getting two new episodes, not to mention the multiplayer which gets old too unless you start modding) This happens to be the 6th expansion (9th if you count the three adventure packs) and it features a new level-cap, new dungeons, hundreds of new quests and thousands of new items, an plenty of new land to explore and quest on.
Now, my disclaimer, I haven't played more than about 5 hours each of the original BioShock, I've never played any Total War games (but I've watched plenty of previews of most of them) and I've never played any Everquest (well I got about an hour into a free trial and lost my password.... long long ago...) and I've only played small portions of City of Villains and Champions Online. Therefore, I am not the most knowledgeable on any of the above mentioned games BUT I can still give you my opinion and save you an hour or two of extra research (which you are likely to do anyways because of your curiosity :p)
Monday, November 30, 2009
iPod Touch 2G Untethered Jailbreak 2.2.1 in Windows 7 64-bit
Well I went ahead and followed the steps which include opening up "C:\Program Files (x86)\QuickFreedom\Files\vista\1) ADD HARDWARE WIZARD" (This folder may be different for you, but it should be pretty easy to find.) and in the README!!!!.txt, I followed step one and step two. Step three has me open the start menu and type "hdwwiz.cpl" which brings me to Device Manager. That seemed very wrong, so I tried again. I searched video after video on youtube, website after website on Google, with no avail. I asked quite a few people too, everyone that had jailbroken their iPod Touch had done it with Windows Vista. In this video, 'QuickTether' says that if you open Control Panel and just search for add hardware, you will also find a link that says "Install drivers for older devices with Add Hardware wizard," On Windows 7, this has been removed.

If you happen to be attempting to jailbreak an iPod Touch 2G with firmware 2.2.1 and you are using Windows 7 64-bit, well it pains me to say, but the solution was right under my nose the entire time. Instead of typing "hdwwiz.cpl" just type "hdwwiz" and you'll come up with "hdwwiz.exe" If you watch this video, then everything else will be the same and it should work for you pretty quickly. I wasn't able to get my USB devices to work after the first start up, so as soon as you get to the normal bootloader, quickly press the up or down arrow key to deselect Ready Driver Plus and select Windows 7 then press F8. After pressing F8, select something like "Disable Driver Signature Checking" (I don't remember exactly what it is now) and everything should work normally.. At least it did for me.
Thursday, November 26, 2009
Left 4 Dead review
Left 4 Dead has several different game play modes, first of all Single Player which is the worst of all of them because your only friends are three computer players who don't know how to play worth crap. You can play Easy, Normal, Advanced or Expert difficulties and single player is only worth playing on easy to get an idea of how the map is, so that when you are playing multiplayer you don't suck so bad. If you can beat single player on advanced or expert difficulty, you either have no life, you are cheating, or you are extremely good at FPS games (which implies that you have no life)
The next mode to look at is Campaign. It is almost like single-player, but it's co-operative online, so instead of having three computers for friends, you can play with anyone online. I would start out playing expert though or you'll find yourself getting vote-kicked an awful lot. Campaign is where most of the achievements are it seems, and it's also the place where you'll probably make the most friends :)
Survival mode is kind of fun, but it's also a little lame. All you do is try to stay alive in hot spots as long as possible, and defend from attacking zombies. If one person out of your 4-man team screws up, it can ruin it for everyone which means it may be hard to find a nice team. At first it seemed like I was always the person messing everything up, but I've gotten better.
Versus mode: my most-hated mode and most peoples favorite mode! I am not much of a multi-player versus mode in any game. If you don't play 24/7, you usually suck, and if you suck it's not fun, especially when it takes a long time to be as good as everyone else!
Anyways, I think this is a really really great game, but if you are thinking about buying it: get Left 4 Dead 2 instead. You won't miss anything.
Wednesday, November 25, 2009
Windows 7: Syncing files between networked computers
Well the good new is, if you ever find yourself in the same position, and you have Windows 7, I have found a solution for you. My first attempt at a solution was to just use a USB Key, and yes that does work perfectly well but if you are like me, and you use two computers at the same time, then you have a problem because all of your files are on one USB Key so you would need two copies of each file. So I decided I would stick my USB key into my desktop machine, then just share it over the network and map it on my laptop. This also works perfectly well until you run into the next problem: what if you aren't connected to the same network as your desktop and you left your USB key at home? Yes I do realize that I'm either very stupid or a complete nerd at this point with all the problems I've run into, but I'm one of those people that can't live without whatever conveniences are available.
My final solution comes down to this, and I had no idea this was a feature of Windows 7, but if you go to Control Panel, then click the little arrow next to Control Panel in the address bar, the first option should be All Control Panel Items. If you scroll down a little bit you'll find Sync Center. With this you can set up network drives to sync automatically so they can be available offline. Now, if you have two computers, one is running Windows 7, you accidentally leave your USB key at home in your desktop while you are taking your laptop to school, and you need to work on a project you left on your USB key, you can do so without trouble! Hopefully this will benefit more than just me.
Friday, November 20, 2009
using namespace std; in C++
A particular problem that I have found, is the statement “using namespace std;” What this does is opens up the entire scope of code you place it in to the standard library, and it restricts the names you are possibly able to use. For example, did you ever know that copy, list, sort, and max are all std names? Once you include the 'using namespace std;' at the top of your file, you've added all of those functions to the global namespace and you can't ever make a variable or function with that name anywhere in your code. So this doesn't seem so bad, worst case scenario you just go and change those names. It may take you a little while (a long time if your code is long at all) to find out what went wrong, and you might not receive an error message, but you can just go back and use different names. So now you go get a library using a different namespace, called nonstd so at the top of your source file you have 'using namespace std;' and 'using namespace nonstd;' We've already deduced that the std namespace has a function called copy, but this nonstd namespace also has a function called copy. It will be hell to find out what is going wrong.. and further more how will you fix it?
Okay, so it's true that anyone who is able to write their own library and publish it so you can use it will be careful NOT to ever use any names that conflict with the std namespace, but that's what namespaces are for! One useful thing about namespaces is that two different libraries can use the same name without being conflicting. The thing is the names will conflict if you use the 'using namespace std;' declaration in your source file. While I was researching this topic, I found this: http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-a-bad-practice-in-c Here, sbi answered a question, scroll down a little to see it: “It took most of us very few weeks to get to used to write the prefix and after a few more weeks most of us even agreed that it actually made the code more readable.” Here he was talking about a project where it was agreed that using directives would not be used at all, and this is the result of that.
So what is the solution to not using the using-directives? Well the simple way is to type std:: in front of everything, as so: std::cout, std::cin, std::endl, etc. But that takes a little effort. Better than using namespace is using std::cout, which solves a couple of the problems I talked about previously. However, if you do run across two namespaces with the same name, and you need to use both names in your code, then you will have to type the namespace::function.
So as a short conclusion, don't use 'using namespace std;' in your code, it has some bad effects in the long run. In small projects for a beginning C++ class at school it's probably okay since you usually won't write any excessively long source files with lots of naming conflicts.
Saturday, November 7, 2009
Dare 2 Share
The main focus of Dare 2 Share, is to give teenage students like myself the fuel they need to share the gospel with their friends. This year they had a 'Blaze' theme, and there were some nice analogies. To start a fire you need three things: a spark, fuel, and oxygen. If you already have the fuel and oxygen, just a little spark can do a lot. The way I see it is, you need oxygen to breath, just the same as you need to read the bible, so the bible represents the oxygen. The fuel is an event like Dare 2 Share, or an inspiration, something that really motivates you to share your faith. Once you have those two, it just takes a spark. When you see a friend of yours, and you know they are going to hell, that's your opportunity to make a spark, start a fire, and change that persons life.
In my own time, after Dare 2 Share, I was trying to find a video on YouTube that my youth pastor had shown to us after Dare 2 Share a few years ago, well I didn't find the exact video but I found something very similar, also from Dare 2 Share http://www.youtube.com/watch?v=nddtcwF3flY Imagine if you knew someone that you could have, and should have witnessed to but you didn't, and the time came to pass; it's too late. Imagine what would happen if you knew someone that died, and they happened to go to hell. Would they write you a letter like the one in that movie?
I want this specific post to kind of provide a little bit of fuel for everyone that reads it, but let me know what you think of it. http://vi3gamehkr.blogspot.com for those of you reading this from Facebook.
Monday, November 2, 2009
Need for Speed: Undercover
I've always liked racing games, Need for Speed: Underground, and Underground 2 weren't too bad in my opinion, I played them on the Gamecube, so I never had compatibility issues of course, but they definitely were fun. Since then the only racing I've done is Mario Kart: Double Dash and Mario Kart Wii (plus a little Mario Kart DS, I love Mario Kart) So I went ahead and downloaded and installed Undercover, the very first thing I noticed is it ran with an average of 10 fps at max settings (and mind you, I'm running an AMD Athlon X2 64, with 3GB RAM and an NVIDIA GeForce 9800 GT. I played it on Windows 7 Professional) so I turned the settings all down to low and achieved about 30 FPS. Even with this I still received a few spikes, especially when rounding turns and making jumps.
So really my only criticism's are here: the game seems to be poorly coded, the graphics are nothing extreme but my 9800 GT is hardly able to handle it! The other thing is, in being a racing game where you are usually moving at about 200 MPH or higher, you would expect the collision system to be made JUST FOR high-speed races right? Well I notice that when hitting things like light poles and cones at anything over 150 MPH, it appeared you went right through it and then both the sound, and the action of the cone falling over were delayed. But as far as that collision thing goes, I guess I am just picky!
The game has several achievements, and if I had any friends that were actively playing NFS, it would be fun to try to get the different achievements before them, and beat them in private races! The storyline is fairly short (I beat it within 14 hours of playing!) but you can still redo all the races and try to "Dominate" all of them by getting a really good time. The career mode does die down a little quickly though. Now it's fun to hop on a few times a week for about an hour to race against other people online, but the game's replayability level is very low. Overall the game is fairly easy and probably geared toward any casual gamer, and for the hard-core gamers like myself there is always online multiplayer!
If you are thinking about buying this, go ahead and do so if you can get it for 10 or 15 bucks, it is worth the small price. If you think you are a hard-core gamer though, you should probably check out some other racing game.
Tuesday, October 27, 2009
The Effects of Thinking and Having a Strong Will in School
I feel like in school, you are not there to learn about and remember the dates of history, the rules of grammar and English, and the equations of math, but you are there to learn how to learn, and to learn how to logically think. When's the last time you took a history test and remembered any of the dates you had memorized for that test a week later? Now you at least know what you are looking for if you ever wanted to recall those dates and you would know where to look! A person who graduated from high school with A's and B's could know just as much about something as a 2nd grader, but the graduated high school student would be able to learn a lot more about something than the 2nd grader. I'm not writing a research paper here so I don't have a way to prove any of these things but these are my theories and I want to know what other people think about this.
Friday, October 23, 2009
My adventures in switching from Windows to Ubuntu Part 1
Thursday night I stuck the CD in and installed Ubuntu 8.04 because it was LTS. Well bad choice because that edition is now over a year old and my monitor and graphics card are... less than a year old, so I was running 800x600 resolution the entire time. Friday afternoon I just went in and installed 9.04 instead since that's the newest currently available. Instantly, 9.04 already had my graphics card and monitor recognized so I could run 1600x900 immediately, and I installed my graphics card drivers in a breeze.
Some things to note, Ubuntu isn't like Windows at all (obvious) but in some ways is better. I really like Windows a lot because I know where everything is at and I have my own little shortcuts set up for optimum speed in my daily computing. There are some minor cracks in my little system though, I run into out-of-date software constantly, and every once in a while there's that darn security issue. I noticed instantly that updating software with Ubuntu is very easy. I didn't even have to open Firefox to download my graphics card drivers! Well I had to open firefox to find out HOW to do it without opening firefox but now I'll be able to update those drivers with a click of a button, as with all the other software I installed.
Next weekend, hopefully I'll be able to get my sound working. I know I should probably (definitely) get a legit sound card but with Ubuntu, you make work what you have with as little money as possible :D
About Me
I'm a hard-core Windows boy, I've always used Windows but recently I've considered switching over to Ubuntu. I started out on an old Compaq (need I remind you, my laptop is ALSO a Compaq.. Not that they are my favorite, just what I can afford) running Windows 3.1, playing whatever games I could find at the time, and learning QBasic. To keep on track with the current subject, Windows, I later did some things with Windows 95 and then later, Windows 2000, and soon enough I was on Windows XP which is when my history really picks up. I had somehow got an old junk machine with Windows 98 and I got this baby to run Windows XP (with 128MB RAM and a <1GHz pentium 3 processor) but I never used that as much. My first GOOD computer was my Compaq laptop which I got in 2008, and it came with Windows Vista. I installed Windows 7 on it in January right after the public beta was released. From there I've always used Windows 7, the Beta, the RC, and now I'm running an RTM version I got from my school :D That concludes my Windows history.
I've been interested in programming for almost as long as I've been into computers, but I've never really kicked off the ground with it unfortunately. I started going through a QBasic book my dad gave me a long time ago and I found something online called DarkBASIC which is made specifically for creating games. This interested me a lot but I was always hindered by the computer's onboard Intel graphics chipsets... Then I got addicted to a game for 3 years . . . Then I got back into programming and started learning C++. By this time I had worked at WaterWorld for a whole summer and bought a nice laptop with the money I made. I had gone about half way through a C++ book before I lost interest to something else: XNA Game Studio. This is Microsoft's game studio for creating PC, Xbox 360 and Zune games. I pretty quickly picked up on C# by going through the book, Head First C# and got to making a project in XNA. Then the summer came and I worked at WaterWorld and also got interested in World of Warcraft. . . And then the school year came and I'm back :)
This semester (Fall 2009) I'm taking two extra classes at Red Rocks Community College, college algebra and computer science I: C++. Both are pretty much review of stuff I already knew unfortunately, but I am definitely gaining knowlege of the college environment and making friends. By this point I've started practicing C++ again obviously, and along with the class at Red Rocks, I'm casually going through the book, C++ Primer.
My typical week consists of 2 days of Hope, 2 days of Red Rocks and then Friday and Saturday to work on homework half the time and just do whatever the other half of the time. In this case, whatever being: Playing WoW, or maybe Unreal Tournament 3, working on teaching myself some C++, playing with random things on my computer (8 hours of fiddling with random things and reading random articles could save you 8 hours of waiting for the damn slow computer in the next 2 years...) . . . (Although most of the time it's the last two hours that benefit you... the first 2 hours you screw your system up and then the next 4 hours you fix it.. then the last 2 hours you make it even better) Then Sunday is my day to either sit back and relax, maybe enjoy a movie or something... or my day to frantically work on all the homework I've neglected the rest of the week!
