Reflections on Project Management
Aug 19, 2013
First off, a disclaimer. I’m still in school. I’ve only held one position where we used project management software, and it was a small company. I’m probably not qualified to speak on the subject, but maybe this will be helpful for someone to see through a novice’s eyes.
In my software development class, we learned a lot of stuff. We learned how to test our programs, how to set up source control, how to check financing of a project__; managing bugs, code, and money, basically. The thing we didn’t learn, though, was how to manage the most important resource of all; people.
Read more...
Never #define E
Aug 8, 2013
I just spent the last hour tracking down a stupid C++ bug with a friend. The problem was that I had a “#define E 2.71”, and Boost also uses the letter “E” somewhere, obviously. Since the preprocessor just blindly replaces all instances of “E”, it was getting replaced everywhere. This was giving insane amounts of errors, none of which were related to the problem.
Anyway, just a small PSA: never “#define E”.
Metro: Last Light - The Ending
Aug 5, 2013
In this series, I’m discussing Metro: Last Light. I finished the game several days ago on hardcore difficulty, and I couldn’t get it out of my head. It was so good in so many places, but it still had many unfortunate flaws; thus, here I am rambling on about what I liked and didn’t like. Unfortunately, in this post, it’s mainly what I didn’t like. You can read part 1 here, where I discuss the atmosphere and level design. In part 2, I discuss the gameplay. In this one, I’m going to talk about the ending, which had a lot more wrong than right with it. As before, if you don’t like spoilers, don’t read.
I already covered the basic premise of Last Light in the first post. However, I didn’t talk about the unfortunate development problems surrounding the game. The first game, Metro 2033, sold pretty well. It was a great game, if a little rough, and many critics praised it. Seeing this, THQ, the publisher, ordered another one of the same from A4 games. The game was announced, hype started to build - and then everything folded.
Read more...
Metro: Last Light - Gameplay
Aug 4, 2013
Metro: Last Light is a great game, there’s no doubt about it. I finished it a week ago and haven’t been able to get it out of my head. That being said, though, there were things in the game that were really great and things that were… well, not really great. In Part 1, I discussed the atmosphere and environment that the game presented, which was great most of the time. In this part, I discuss the gameplay. **There are spoilers for Metro: Last Light in this post. **If you still want to read, most of it’s spoiler free; just stop at the point where I mention Pavel.
As I’ve enthused to anyone who’ll listen, the gameplay in Last Light is just awesome. I found myself executing near-perfect hollywood stunts pretty regularly. It’s not as good for these types of situations than, say, Far Cry 3, but I still pulled off some really cool-looking manuvers:
-
Someone sights me, just a little bit. He turns on his headlamp and comes looking for me. When he rounds a corner, I knock him out.
-
There are two men standing together. There are probably paths I could take around them, but I cannot find them. I snipe one of them. His partner looks about in confusion, giving me just enough time to pull out a knife and throw it at him.
-
I ghost through a level, taking everyone out silently. Suddenly, I notice that a guard’s patrol route will take him into the body of one of his comrades. Raising my rifle, I aim quickly and take the shot. It’s flawless; he goes down without a sound, and without raising the alarm.
Read more...
Clearing Cookies in Spring & Tomcat
Aug 1, 2013
I haven’t been blogging very much (besides my most recent post, of course) and I mean to change that. The reasons I stopped are varied and multifarious, but one of the most prominent ones is that I scored a full-time internship for the summer at Joule Assets, doing web programming. Recently (i.e. today) I encountered a particularly frustrating bug, and I figured I’d contribute to the common good and write about it.
We’ve been working on a webapp utilizing Spring, a web framework for Java. We have this running on a Tomcat server, and are developing through Eclipse. A particularly frustrating mix of technologies.
Ok, well, enough of bashing on Eclipse - that’s a topic for another post. We were talking about the webapp.
Read more...
Metro: Last Light - Atmosphere
Aug 1, 2013
I finished Metro: Last Light a couple days ago, and I’ve had some time to digest the game. It was certainly a great game; I played through it in only three sittings, which might be a record for any game I’ve played. I’ve been hankering to put down my thoughts on the game, so here they are, in the form of long, meandering blog posts. In this one, I’m going to talk a little bit a lot about what I liked and didn’t like about the game in general; specifics will come in future posts. There’ll be spoilers for the game, so if you don’t like those, don’t read.
A bit of background first, then, to serve as a lead-in. Metro: Last Light is the successor to Metro: 2033, both based on books by Dmitry Glukhovsky. In the classic “after the apocalypse” style, the game takes place on post-nuclear-war Earth. The remnants of Russian civilization huddle in the Metro, waiting for the world above to become inhabitable again for those without gas masks. You play Artyom, a hero who just blew up a bunch of mutants who may or may not have been threatening to destroy the metro and all who lived in it. Last Light takes place a year after this event, after Artyom has been inducted into “The Order,” or “The Rangers,” a bunch of soldiers who try to protect the innocent and generally end up failing.
Much of the game is spent underground, in the Metro. However, don’t think it’s just a rail shooter. A lot of my time was spent outside of the main quest areas, just scavenging and looking around at the environments. Every area will have some nice rewards, and not only tangible ones; while more military-grade bullets are nice, the best rewards are often the small stories and dramas that take place off the beaten track. Now, by no means did I explore every single nook and cranny of the game, but even then, I still experienced several of these.
One such small story takes place in the railcar level.
Read more...
Hacked
Nov 19, 2012
It all started when I tried to show my friends a javascript file I had put together with Three.js; it was nothing much, just loading a model and putting it on a grid. It worked on my local machine, but not on the remote - it said something about “unexpected character.” After putting a question on Stack Overflow and getting no satisfactory answers, I took a look at what the javascript file was actually getting back from the server when it was trying to load the model. It was a single line:
hacked by hacker
How embarassing.
Site’s obviously back up now. The three things that I had to do were:
1.) Replace the “index.html” and “index.php” files with the default ones from the core wordpress install (I actually overwrote everything, just in case)
2.) Change the line in the htaccess that was redirecting a lot of things (such as the request to get the 3D model, discussed above) to the index.html
3.) Uninstall and reinstall the theme, since the header.php file was also replaced by a php file that simply wrote “hacked by hacker.”
I’m not so sure that all infected files are removed, so I’ll be monitoring closely.
Player Freedom in Game Design
Oct 19, 2012
I’m trying out different things right now; the rapid prototyping of the Source Engine pleased me greatly, but I realized that I probably didn’t want to make a first person shooter (or extensively modify the engine to support another genre of game). So, I’m trying to return to Wiki World.
The big problem I had with it was trying to figure out what kind of combat system to put in it. I’d planned Wiki World to be this really open, player-controlled game where players created everything, from the environments to the people; however, combat really does not mesh well with that formula. Combat often boils down to counting numbers: health, movement speed, damage, damage over time, etc.
So, perhaps the answer is to do away with the combat completely. The problem, then, is that essentially what I’ve created is a roleplaying engine. Now, one might argue that all games are roleplaying engines; in Starcraft, you take the seat of a commander in charge of his armies. In an FPS, you take the role of whoever you control. And so on. But no, I mean a different kind of roleplaying engine - that kind where you sit around in a chatroom and pretend you’re elves, or dragons, and the like.
Of course, it’s a nice concept, although almost certainly something someone’s done before. Either way, that’s not what I set out to make; I’d really like some core mechanic rather than simply roleplaying. So, combat it is.
Read more...
The word of the day: Halcyon
Oct 17, 2012
Yesterday, in Theory of Computation, we went over the exact same thing I did in my little series about a year ago on generating infinite terrain; the problem of countable sets.
Just thought I’d share that.
Programming vs Design, and the Source Engine
Oct 7, 2012
As promised, I am doing things. I am, in fact, doing some very wacky things. The engine that makes these things possible is Valve’s Source Engine.
Freely distributed engines are a wonderful thing. They allow you to quickly prototype ideas without having to worry about all the underlying details; for example, how do I figure out what’s in front of my character? How can I limit what the player sees, in an efficient manner? Why the hell is OpenGL so complicated!?
In short, writing an engine is hard. Often, writing an engine will get in the way of designing your game. Of course, the two are not exclusive; often, you’re going to have some cool game mechanic that no one else has thought of, and you’ve got to write your own game engine or extensively modify someone else’s to get that to work. No getting around that. However, I have to come to grips with something that all designers, maybe all engineers, have struggled with since the beginning of time: it is much easier to come up with ideas than it is to implement (program) them.
Alright, that may seem obvious. Like I said, it’s something pretty much everyone knows, but what I’ve really been doing, what all of my projects are; they really aren’t designing anything. They are all about programming game engines, which is not what I wanted to do when I started them. There are myriad reasons to program an engine, of course, even one that does what’s been done before; I wouldn’t be me without the urge to figure out how, for example, that 3D stuff is actually done under the hood, and I’ve dabbled in a bit before. But right now, what I really want to do is make something. I want to design something.
I suppose you could argue that I was designing engines. However, there was nothing really new in them. I could have picked up any old 2D game maker and made JAGS. I could have picked up a rendering engine from somebody before implementing my terrain generator. There were no real new ideas in there, no game mechanics, nothing really new and inspired. Wiki World might be somewhat of an exception, and I’m hoping I can come back to work on that project someday, but I got tired of working in Javascript (which we might come back to in a later article).
Well, anyway, enough of my moping about. After watching this video, I got somewhat inspired (talk actually starts at around 2:34):
Read more...