I am so tired! We are finally done with our SGP project. I'm not sure if I'm "happy" with our game, but I am satisfied. The last few milestones have been very disappointing, but we really got it together for the last turn in. Unfortunately, with our projects being as big as they are, we won't be seeing our grades for a few more weeks. I had been imagining the "main world" of our game to be a big space lab. There'd be a hallway leading down to the probing lab The lab would have a window so you could see the probing equipment. A hallway would go to the docking bay where the aliens would board a ship and fly to earth to create crop circles. A hallway would lead to a dressing area where the aliens would suit up for lunar surface adventures in cow tipping and avoid observation. The main hub would be a giant blue half sphere. Instead, the main lobby is one room with a teleport in each corner. The teleport looks more like an elevator, though. And there's a desk with an npc behind it that will open the main menu if you talk to it. That's all! There's nothing there! I don't know what else I could say about it.
From my impression of the teacher, I'm lead to believe we won't be getting a very good grade on it. See, at the start of the class, we had to make a document saying what the game would be about and how it'd run. And Dustin is pretty strict when it comes to deadlines and documentation. I think we'll be losing a lot of points because we didn't follow our document very well. I'll blame Blue and Green for this. It was mostly Blue's fault because he was our 3D asset guy, and he failed at working. He did make the 3D lobby, but it was nothing like I imagined. In our document, we failed to mention anything about this lobby, but we had to go back and write it in. I apparently don't have that part of it, so I don't know how much we actually detailed in the document. Which may or may not be a good thing. See, we purposely kept the document fuzzy so we had some room to change. However, this meant that Blue could piece whatever he wanted together and call it done. The sad part might be that I was the one putting all his pieces together, but whatever. I'm kinda glad I did most of his work, else I would have had to integrate his work into the project too. It's pretty hard trying to add two minigames to my project, but it'd be worse adding more. We all have different coding styles, and for the most part, that means our games are entirely different. This could easily be seen in how we paused the game.
To start with, I had programmed my games to detect which player had paused the game, and it wouldn't unpause until that player actually unpaused it. We had to have an "Interactive HUD" (heads up display), but we weren't really sure what the teacher meant by that. I asked if we could have the game pause if the user clicked on the timer on the screen. The teacher said yes, though it was a pretty sad solution. We didn't care, as long as the feature was there. So Green coded the HUD to pause if the user clicked the mouse ... anywhere! You can click off the window and the game will still pause, so it sucks pretty bad. Regardless, I added that pause into my minigames. We also needed some error checking for a gamepad getting unplugged. Green coded a function to figure out how many controllers were plugged in, so if there was any difference, we'd pause the game. I add that to my pauses as well; so my game could pause if any player pressed Start, if anyone pressed the left mouse button, and if any player unplugged their controller. Green only checked the left mouse button, and Red checked if anyone pressed 'P' on the keyboard. Luckily, Red had created a variable to store his pause state, so I didn't have to change too much for him. I just kinda copied my code and pasted it into his minigame. Instead of his pause state being boolean (yes or no), I changed it to an integer to store which controller had been paused. (I actually changed it to a short to preserve memory.) Green, however, relied solely on the HUD's pause state. The HUD didn't check for the other pause conditions (which would have been better). His pause event was: if( Hud.IsPaused() ){ ... return true; } I suppose I could have pasted my code in there as well and change that if to if( m_sPaused ) ... but I didn't. I just added the joystick unplugged condition: if( Hud.IsPaused() || JoyOut() > 0 ) ... The JoyChange() will return the difference between the old gamepad count and the new gamepad count. Thus if someone plugged in a controller, it would return -1. Because -1 joystick was unplugged. I kinda feel dumb for not adding the m_sPaused, but whatever. It's not entirely my job to make sure the game works uniformally.
I also had to change Green's gamepad manager so it could scroll through my menus. It used to just fly from the top choice to the bottom choice if the joystick was moved. So now when to press the joystick in a direction, it'll move one choice. However, when you let go of the joystick, it moves again. I know exactly why this is, but by the time I realized what my error was, it was too late to fix it. And I don't really care to ever open up that project again, so I doubt I'll bother to change it.
***
The schedule for "next" month is pretty weird. Since we have Thanksgiving and Christmas breaks, the classes are scattered across November & December. I have Machine Architecture on MWF 5pm-1am, and OpenGL on TThS 1pm - 9pm. My weeks will be: MT, M-F, M-S, M-F. So the weekend before Christmas will really suck because I'll only have Sunday off. But I guess I had a lot of SGP work over this past month, so I'm not sure how different it will be. I'm told that the rest of the curriculum will be hard, but I'm hoping it's not too hard for me. I like having free time at home.
Machine Architecture seems mostly hardware oriented, but has some material on the software side. Mostly relating to De Morgan's laws and assembler language. I've heard that we aren't allowed to use Visual Studio in that class, but I don't know if we'll even be programming in C++.
OpenGL is a graphics API, much like DirectX. So, I guess we'll just be learning different function calls to do the same thing as before. OpenGL looks better at first glance solely because its function prefix is gl instead of D3DX_. I'd have to say that the underscore might be the worst character possible, but than again, I don't really like any buttons on the numeric row. That's possibly because we didn't use it in any of my typing classes. At least I'm getting better using it.
***
I'm beginning to dislike MMO's because I'm always urged to hop on. I think, "If I'm not leveling my character, I'm wasting my time". But that's really not how I should be looking at life. I mean, I'm really tempted to just relax and watch a movie right now, but what gain is there? I can't get that hour and a half back. If I were playing CoV, I could get halfway to the next level in about an hour and a half. So clearly, there should be more reward in playing CoV over watching a movie. However, the game involves my constant attention. I can't zone out or fall asleep (like I'm also tempted to do). Chill's working on his SGP game, Matt's busy with his schoolwork, and Kay is still s.o.l. with her computer. My supergroup seems divided over who's playing CoH and who's playing CoV. And my Brute doesn't seem capable of taking a beating, so teamming is generally bad. If the team has a couple of healers, he should be good. But that's never guaranteed. So ... there's no one I can really play with, making the game that much more unappealing. What I really want is a good book to read. Even though that'd take more hours of my time, it would definitely be worth it. With books, you get to immerse yourself into the main character, thus releasing the world around you. I really just want to fade out right now.
Let the entire world just slip right by.
3 Comments:
Matt's having me bring my computer home this week to try and work on it, so I'll possibly be back in Paragon after Thanksgiving. I read the rest of your post, but neglected to understand most of it, so that's all I have to say.
Something long and round is on its way to you filled with swag. Sent priority mail--think they said it might take up to a week. More fun!
Merging differing programming styles are often a problem. Did I ever tell you Tjarks's two rules of computer programming?
Rule 1: Everyone else's code is shit.
Rule 2: Every programmmer believes rule 1.
I suppose I should add rule 3, related to code inspection and merging projects: No one want to hear that their code is shit.
For the pause from multiple sources, you may have wanted to use an int as a bit map, with a separate bit for each pause condition. The test is then easy, you're unpaused if all the conditions are clear, so it's just 'if (bitmap) {I am paused}'. (Pseudo C, of course).
Post a Comment
<< Home