Moar things….   Leave a comment

Winter vacation’s been going on for a couple weeks now. A few days in, I started working on a strategy RPG type game. I don’t have a lot to show for it right now, but I do have something:

srpg

Posted December 28, 2011 by qwerty102 in miscellaneous

Tagged with , , ,

RPGThing, school, life, and more   Leave a comment

It’s been almost a full year since I last posted here, and to say the least: RPGThing kinda hit a brick wall with my having to do schoolwork and all that. On the bright side however, I’ve done a lot of game programming for school, namely the two semester projects I’ve done have both been rpg styled games.

The first game I worked on was going to be in the style of the Diablo series, but was changed half-way through the semester to a side scrolling style (the designer on my team likened it to Maple Story, a game I have no experience with). The team name for this one was Team Reckless, and we had a total of four people.

This game turned out as an atrocity of code and unfinished mechanics. The first problem I had with this was my and my teams plans – we planed for something far too big to create in a single semester. Simple as that. It was our first (and probably worst) mistake.

The second problem was that teams needed some form of networking component in our games. This was a major issue in that we were never taught anything about networking or network programming seeing as we were still freshmen students. Since our game started based off of Diablo, that’s the kinda of networking I was trying to accomplish (I was in charge of the networking and core mechanics) – one game would act as a host for a group of other games. The way I went about handling this was with asynchronous networking, where the networking module works on a separate thread from the main modules so it can receive data independently, and the main modules can access the data when they need it. I started work on the networking about halfway into the semester, and never finished it. For all the time I was working on it, more and more problems kept arising, none of which had any reason to exist when I stepped through the code. Because I was working on this for most of the semester though, the core mechanics for the game went unfinished.

What we got in our programming classes was nothing like that. What we got was this: when someone asked a question, the professor would walk over to the computer (we have small classes in computer labs), ask why the student did something in a certain way. To which the student would say (in a variety of ways) that they don’t know what they’re doing, and no one was teaching them anything. After a few more exchanges the conversation would reach back to the problem at hand, and the professor would say something along the lines of “that’s a good question, maybe Google would know.” Because of this, me and the handful of other students who know what they are doing (as well as a new adjunct professor for the CS department at school) have been volunteering to help students with actually learning how to program. Luckily I have a tutoring position set up for the spring semester so I also can get paid for helping them!

That and other problems aside, since this game turned out so bad I spent a good bit of time researching game programming during the summer and I managed to learn quite a lot about it. So now I know a good bit about how to set up different core mechanics for games! even though I still have trouble with the simplest of collision handling (HANDLING not DETECTING! there is a difference!), i.e: 2D bounding box. >_>

.

The semester project from this past semester was a Rouge-like rpg based around NetHack (site: http://www.nethack.org/). For this project I was with Team Ironclad Turtles (a total of three people), and the game’s name was Pixellated Blimp Troopers. I (for one) can’t tell how obvious it is, but we got that name from a random video game name generator (found: http://videogamena.me/).

For this we used XNA in order to speed up the development process. To say the least, it worked wonders. Combined with what I learned over the summer, this game got to be quite a good bit ahead of the other game. A big part of this project was a random floor generator, which I (so very wittily) named “DunGen”. I managed to get it to the point where it was almost fully functional. It generated some random rectangular, circular, and L-shaped rooms and placed them around the map, but I couldn’t quite get the connecting halls generated. Instead of finishing it, I figured working on the game itself would have been a better use of time.

The game itself ended up pretty nice by the end of the semester. I changed around one of the levels generated by DunGen to have halls so I had something to test on, and I added sprites from there. For sprites, I made a basic sprite scripting system which stored a lot of information about the sprite in text files. The system made it quick and easy to make sprites for the game; so fast in fact that drawing the 32×32 tiles for the sprite took longer than making the sprite file!

There’s not really much more to say about the game – I don’t have any significant complaints or anything about it, but I will say this: we are planning on working on this game more in the future, perhaps just to see what we planned for it get done.

Posted December 21, 2011 by qwerty102 in miscellaneous, RPGThing

Daily Update: Jan 25, 2011   Leave a comment

Yeargh… school is taking up a good portion of my time again, as I kinda expected. I am still finding some time to work on RPGThing though, albeit only a little.

Next up on my schedule is the ability to travel from one map to another (i.e: world to a town, town to a house), but I haven’t implemented special tiles yet – such as the ones to put the player on a different map – and I would prefer t get those in before working on the map transitions.

In other words, I’m going to work on special tiles, but I’m not going to make a big post about it, and after that is the map transitions. A step ahead of that is making a unified map file since it’s a bit annoying to have a file for the tilemap and a bitmap for collision.

Posted January 26, 2011 by qwerty102 in RPGThing

Tagged with , ,

Daily Update: Jan 16, 2011   Leave a comment

Whelp! I’m on my laptop until Tuesday when I get back to my dorm, and all my code is on my desktop.  However, I did some work on here last night and got animated sprites (using a sprite sheet) down.

I have a simple format for the sprite sheets: there are four columns with each representing a direction the sprite is facing, up, down, left, and right,  and each column goes from bottom to top with each frame. For example, here is the sprite I was using to test, it is 32×32 and has 4 frames of animation:

Posted January 16, 2011 by qwerty102 in RPGThing

Tagged with , ,

Daily Update: Jan 12, 2011   Leave a comment

Whoops, looks like I haven’t been posting anything these past couple days; sorry internet! There hasn’t been any progress on the programming part of this project though, so you’re not missing much. Instead I have been working on the story part of the quest I will make. I decided to work on that a bit instead of programming because I have been waking up a lot to a faulty smoke alarm in my house, and (as I said here) I’m afraid to write any code when I’m tired.

I’m not going to reveal any of the story I have yet, simply because it’s in such early stages that it may just be completely changed by the time the project is released. However, I will say that a lot of the story I have been thinking about is the mandatory secret super-boss that all rpgs need. Something like the WEAPONs of FF7, for example, only more secret and less “OH GOD! Why was Emerald right where I dove in the submarine? D:” I don’t know why I started working on this particular part of the story though, but I do know that I already have a page or two of notes back in my dorm room on it, so I wasn’t going to work on the general story (I could have worked on some details though :\).

Posted January 12, 2011 by qwerty102 in RPGThing

Tagged with , ,

Daily Update: Jan 9, 2011   1 comment

“Works in theory”, turned out to be “works when I’m actually done with it”! Turns out I only got it done for when the player moves up, but not in the other directions.  With that said, bigger maps along with map scrolling is working alright. I don’t have any screenshots or video for this though; screenshots would not convey the map scrolling too well, and making a video is too much work for me right now.

Up for tomorrow, I think I’m going to work on… I don’t know what I’m going to work on. I’m thinking of getting animated sprites (using a sprite sheet) in but that isn’t one of my highest priorities, so if I think of something different, I’ll work on that instead.

Tonight though, I’m going to rest, I didn’t sleep enough last night and I can’t think about solving problems today. I’m not even going to try to write something because I’m afraid I will write some code I’ll have to spend a lot of time fixing later.

Posted January 9, 2011 by qwerty102 in RPGThing

Tagged with , ,

Daily Update: Jan 8, 2011   Leave a comment

Creating a map image from simple tilemap ended up being a lot simpler than anticipated actually! I’ve done things like this a few times before (loading a tilemap from a file), but I can’t recall ever actually making a texture for OpenGL from one. you cannot tell from the screenshot (below), but the map it shows is not loaded from an image, but rather from a byte-array-based tilemap (stored in a separate file).

Oh look, our little circle-shaped friend even got a new house, and it’s right on the shore too! Actually, I made this map to make sure multiple dynamic map object (DMOs) work right together. They do, and I had no reason to think they wouldn’t, but I still checked just to be safe.

It’s still pretty early, so I will try to get support for larger maps (with screen scrolling) in. If that’s not finished by the time I decide to go to bed, that’s what is up for tomorrow!

P.S.: You probably noticed that instead of having an actual title for the update today I simply called it “Daily Update: Jan 8, 2011″. I will be doing this from now on when the progress is something I had planned to finish for the day and mentioned so. Anything that does not fit into that category will be: 1) not worth posting about, 2) something that is temporary, 3) something in the debug mode (ex: the info in the title bar above), or 4)something that will be either on its own post or edited onto the last update.

The “daily” in the title here isn’t meant to imply that these updates are going to be every day. It is however (an attempt) to keep me updating the blog with whatever significant progress I have made. I know that as time goes on with a project, what is getting added will be more complex, and end up taking more and more time to complete. When I get to adding the bigger features (a party and a battle system, for example) I will most likely make a post about how I designed it, along with some kind of date I expect to be done with it.

EDIT: I got enough done to where larger maps work in theory, but  I haven’t actually tested it yet. It was something else that ended up being a fair amount simpler than anticipated, especially since I learned how to use the glTranslate/glRotate/glScale methods since the last time I tried this kind of thing! In fact, it was as simple as making a Point variable to represent the camera , then putting these near the beginning of the render function:

Gl.glLoadIdentity();
Gl.glTranslated(Cam.X, Cam.Y, 0);

Oh, how manipulating the display matrices makes things so much easier! I actually had this done a few hours ago (yikes, it’s already 5 in the morning D:), but my computer crashed while I was writing the map and I got distracted after rebooting. Making a map still takes a little while since I’m still doing that via a hex editor right now. The reason I haven’t made any map editor yet is because the file format is still very primitive, and it wouldn’t be worth it just yet. Either way, I’m off to bed now; I’ll work on testing the map-scrolling first thing tomorrow.

Posted January 8, 2011 by qwerty102 in RPGThing

Tagged with , , ,

A player sprite and a door!   Leave a comment

Today’s progress isn’t much, but it is still significant! So much so that I made a video for it… okay, I made a video just to show off the “animated” part (animated in quotes because it’s really just switching between drawing and not drawing the door >_>). If you have trouble making out the video, it can be viewed at 720p.

I must apologize for the lack of audio, my microphone suddenly doesn’t want to record at full volume, even with the input boosted as much as possible :/

That aside though, here’s the progress I made today:
An input system.
A basic player sprite
A basic Dynamic map element (the door).

Up for tomorrow is making the map image from the tileset!

Posted January 8, 2011 by qwerty102 in RPGThing

Tagged with , , ,

Oh, how ironic…   Leave a comment

I find today’s XKCD comic rather… fitting for RPGThing’s current status.

Good Code

Posted January 7, 2011 by qwerty102 in miscellaneous, RPGThing

Tagged with ,

RPGThing: Graphics Progress   Leave a comment

Not a lot of visible things have been finished for the engine, but progress is still occurring! Most of what I have done is planning actually, but converting my planning to programing shouldn’t be too hard. Until the point where I realize, “Oh no! I can’t do that!”, that is, but that’s already happened once or twice since restarting the graphics engine and it didn’t take long to find workarounds for those problems.

One point where that happened is when I was trying to use an SDL.Net Surface to store the image of a test map I made – and later the map the player is on – and then I found out that there’s no easy way (if any) to BLIT* the image onto the OpenGL surface the game is displayed on. I was trying not to, but I ended up just making an OpenGL texture for it. If I find a way to make a texture from an SDL.Net Surface though, that may be useful for compiling a map texture in the future. That is, to use the tilemap for the area and compile it into a bitmap image, then make the texture from that bitmap. For those of you who don’t know, in the .Net framework, there is no easy way to BLIT an image onto a Bitmap, but there is a BLIT function for the SDL.Net Surface.

One thing I realized while working though is that the game is always drawn at a 4:3 aspect ratio (640×480 to be precise). I have a 16:10 monitor though, so when I tested out the fullscreen mode, I saw this: (alright, alright, the window is just maximized, I’m working on the fullscreen now though; just trying to get it in before I go to bed.)

Oh no! The image is stretched! One of my greatest pet peeves! So to fix this, I took a minute, did some algebra, and ended up with this:

The letter-boxing may not be the prettiest fix for the problem, but it works. I do think it would look a lot better if there were some kind of border image instead of just blank rectangles though. I also feel like I should mention that the image there is not made from a tilemap, but something I threw together in Paint.Net. It uses tiles from a tileset I’m assembling for this though. >_>

After I finish the switching to/from fullscreen mode, I’m going to bed for tonight – err this morning; it’s already almost 3! Tomorrow I’ll be working on drawing the player and dynamic map elements, such as a door (for that house) which opens (isn’t drawn) when the player gets near it. After that, I’ll move onto compiling a map image from a tilemap and tileset.

*BLIT – “BLock Image Transfer”. It’s the same as copying one image (or a section of an image) onto another image.

EDIT: *sigh* after a bit of research and some trying to make a workaround, it seems it’s not possible to switch to/from fullscreen with SDL.Net and Tao.OpenGL without loosing the OpenGL context and with it, all loaded textures. Since loading resources from files (like textures) is what causes all the loading screens in video games, I would rather stick to only being ale to maximize the window instead of having a loading screen every time the game is switched from windowed to fullscreen mode.

Isolated Intel Hyper-Threading results is a theoretical calculation constructed by AMD to

estimate performace attributable to Intel Hyper-Threading software.

Posted January 7, 2011 by qwerty102 in RPGThing

Tagged with , ,

Follow

Get every new post delivered to your Inbox.