About this blog
Game development, design, and other ramblings
Entries in this blog
... is that I need it. Everyone at some point tries to tackle a project that's too big and ends up failing. We've all been there, right? So we think to ourselves, "From now on I need to stick with smaller projects I know I can complete." And maybe you actually do finish one or two like that. But for me at least, that's not enough. I have big dreams that inspire me. Little projects don't inspire me. If I don't feel inspired I have no desire to put in the work. So yes, the trouble with inspiration is that I need it; I don't get anywhere without it.
So now I'm thinking I need medium-sized projects that build towards larger goals. The larger goals are my inspiration. The medium-sized projects are definite, tangible steps in the direction of the larger goals. The ultimate goal for me is a living, breathing world (like Dwarf Fortress) in a full 3D, destructible environment (like Minecraft.)
So here are my medium-sized project plans to get me there (and the pieces I will gain from them that are steps toward the ultimate goal).
- A 3rd-person multiplayer-only deathmatch. (model animation, physics, networking)
- A 3rd-person single-player RPG. (scripting, enhanced 3d engine, streamed content loading, AI)
- Open world single-player RPG. (procedural world-building, crafting, magic)
By this point I'll be a lot closer to the final goal and I'll be able to define the next set of goals. The other part I've been struggling with is choosing a set of APIs to develop on. I started with DirectX too many years ago to think about. My BS senior project used XNA. For a long time I've been wanting to get away from being tied to Microsoft though. I feel that eventually they'll change things too much and I'll want to abandon Windows (and I think Windows 8 may be my breaking point.) But XNA is exactly what I've been looking for! I love C# and the Visual Studio IDE. I don't like how Unity is all about setting things up in their editor and just scripting the logic.
The solution I've found is MonoGame, an open-source implementation of XNA built on Mono and OpenGL. Granted it's still pretty early in development, but I think this will be a key to my regaining productivity. I'll post back here as I progress.
Wow, I forgot how draining a full-time job can be. It's been surprisingly difficult to work on my game after I get home in the afternoon. Of course, the chronic insomnia is probably also a factor. Either way, finally managed to crank out some more code and finish off the first prototype. You can play around with it here. Move with A and D, jump with Space, click to throw a snowball. I'm not doing bounds checking on the edges of the play field, so just don't go out there.
The main cause of trouble I had with this prototype was figuring out how to edit a texture that was loaded from a file in jME3. Google showed me this forum post for how to fill in the texture data from scratch, but I had to figure out how to start with a texture I'd loaded from a .png. Here's the solution I came up with. I'm putting it here in the hopes that it helps someone in the future. I added this function to the class I found in the link above:
// tex is a texture I loaded from a file
public void setTexture(Texture tex)
// store the loaded texture in the class
texture = (Texture2D) tex;
// I don't want any filtering on this texture
// grab the image that actually holds the texture data
image = texture.getImage();
// Image holds a list of ByteBuffers for each mip level
// loop through the buffer to fill out the array
ByteBuffer buffer = image.getData(0);
for (int x = 0; x < width; x++)
for (int y = 0; y < height; y++)
// the texture loaded from PNG in the format BGR8,
// so I have to index into the byte buffer using 3 bytes
// per pixel in BGR order
buffer.position(((y * width) + x) * 3);
// this seems to be the best way to preserve byte
// values when assigning byte to int in Java
// because bytes are signed
int b = (int) buffer.get() & 0xff;
int g = (int) buffer.get() & 0xff;
int r = (int) buffer.get() & 0xff;
Color c = new Color(r, g, b, r);
setPixel(x, y, c);
// set the image format to what you want before creating
// a new when getTexture() gets called
Of course when I say playable, I mean you can press keys and something happens on the screen: link. A and D to move, space to jump, click to throw a snowball. Graphics are filler.
My original idea was to make a Scorched Earth with a snowball fight setting. Over time the idea has evolved slightly, so now the plan is to make a more action-oriented game. I have the help of an art student, Vince, I met before I graduated. I hope to also have help from my friend Lucas, who has skills in programming and art. As always, you are invited to look over my website, join the forums, and talk about stuff.
As I said in my last journal post (5 months ago), I've been really focused on finishing school. That's my reason for not updating... ever. But that period is over now! Yep, I graduated last week. Finally. So now that I have time to breath, I also have time to show you guys all my shiny new stuffs! First up is stuff I mentioned in my last journal entry. Not really sure why since I'm sure no one remembers it anyway...
As part of my last semesters at school, I ended up with three new things to show off. First is my website. I did an independent project to build a website and a game lobby system to go with it. When I write multiplayer games in the future, I will use the lobby system to show a list of servers within the game. The website will be my base for future projects. The second thing I want to show off is my first game, Neon. I mentioned it in my last post. I wrote the game over a weekend last Fall, and the rest of it (menus and networking) I wrote over Christmas break. I still need to tie the game into the lobby system.
Finally, the really cool thing I want to show off is my senior project, Graviton Strike. This was a 2-semester project for a 4-person team. You can read about it and download a game play video through the link. Sorry, no game download yet. When we figure out how to license it I'll add it to that page and post an update in this journal.
Another thing that typically follows graduation is a new job. Yep, I got one of those too. I work at a small company that develops software for use in aircraft. We target the Android platform and write apps for things like streaming video, mapping, and targeting. It's pretty fun and interesting.
Ok, now that I've updated you all on new stuff, I'll stop now. Soon I'll post about my next game project. Stay tuned!
Hard to believe it's been 6 months since my Frogwood project went the way of the dodo. Here's a little update on what's going on now.
I've been focusing a lot on finishing school, so that's been a hindrance on any personal projects. But I'll be graduating in April, so who knows what will happen at that point. My CS course includes a 2-class series called Software Engineering that's intended to be the senior project. We get put into groups and we get clients, usually non-profit organizations, that need software of some variety. The first semester is working with the client to define their requirements and design the software; the second semester is devoted to implementing what was designed. I'm in a group of 4, and our client is the university's student recruiting department. We're building a game to create interest for the school.
As the team discussed what technology we would use, we eventually decided on XNA. We thought, and the recruitment people agreed, that it would be cool if they could take an XBox loaded with our game to different events so high school students could play it right there. I'd never used XNA before, so that weekend I sat down and started to learn it. Two days later, I'd written a little game. It was not much more complicated than Tic Tac Toe had no menus or other UI to speak of and it was ugly, but it was a game. From there I led my team to create a very nice demo for the end of the semester.
Now it's Christmas Break and I wanted to shake things up a little. So I took my little game and added menus and stuff and now it's almost a completed product. I even managed to implement networked play over the last couple days, which I'd never done before. The game is still ugly, but you can check it out here. A friend offered to give it a graphical overhaul, so hopefully it will turn into a good addition to my portfolio. The game has no instructions yet, but the goal is to create a line from left to right or top to bottom. If you want to play over a network, be aware that the game uses port 13000.
The last new thing I have to talk about is my Plan For the Future (c). I've been wrestling with the decision between breaking into the games industry or going indie. The official decision is indie. I plan to build a website about procedural content, gameplay, user-created content and game spaces, emergent behavior, and other such concepts. My goal is that this site will become a major informational resource for people and a large community hub. It will be the distribution platform for my games. The catch is, the website itself will be like a meta game. The games I make will explore the realm of procedural content generation, and that exploration will largely be guided by input from the community. Or at least, that's the plan.
Want to help jumpstart my goal? Comment about what kinds of procedural games or concepts you'd like to see. It could be anything from procedural terrain to buildings to plants or creatures to quests. It could be computer-generated dialog or storylines. The sky's the limit. Get creative!
I took some time this morning to get started on a magic spell for Frogwood: Flame Wave. It doesn't actually do anything yet in the game, but it looks kind of nice. I also added some stars and trees I found on the internets, and a crappy looking flower thing I drew.
In a previous journal entry I talked about the #1 killer of projects, lack of motivation. Today is the #2 killer, Real Life(TM).
We're getting ready to start releasing a new product next week at work. I found out today that our lead developer is leaving the company next week. We'll be left with 3 programmers, 2 of which (myself included) have been here less than 6 months. And I'm working part time. So anyway, the owner asked me to try and put in as much time as I can. Between that and my classes, which are taking a lot more time than I'd planned, I won't have much left for Frogwood. And in the free time I do have left I'll most likely be exhausted. I'm not giving up on Frogwood, and neither is Adrian, our composer, but my goals have gone the way of the dinosaur. So wish me luck that Frogwood doesn't end up yet another failed project.
As I mentioned before, I got ahead of my schedule last week. I thought about charging forward to the next task, but ended up choosing to convert my data files to XML from my cryptic raw-text format. It was a good choice because it was nice and easy to do and will make adding content a lot easier in the future. This will be a big deal. I've determined that my schedule will allow me to finish the functionality of the game, but I will not have time for any good effort at designing levels and enemies. So the plan is to get to "code complete" on schedule, and then take my time with the resulting framework to explore design issues. I've never really gotten far enough with anything to really have fun just playing around with design in a functional game, so it should be fun.
I'm afraid that my artist friend is flaking out on making art. I haven't seen anything new in some time. He said he's reworking the main character design, but I haven't seen anything. So I'll just keep churning out code and using solid blocks for game entities. I'll find another artist if it comes to that, even if this was originally my friend's game idea. I hate to leave him behind, but not so much if he wanders away on his own.
Got monsters working this morning. Well, so far it's just monster. But you can shoot it to make it go away! Here's a video. This is my first time using fraps, and it seems to make the speed a little inconsistent. The video demonstrates shooting and aiming with the mouse; jumping; animation; monster action; and shooting the monster. You can also see the awesome parallax scrolling that no one has ever done before, ever.
I added code for loading a new level and for firing the basic attack spell. This completes everything I can do right now for the bare minimum of functionality between the map and the player sprite. My goal for this accomplishment was set for Saturday, so I'm a few days ahead of schedule. Go me!
Now I have to decide how to spend these extra few days. Make some filler art to spruce things up a bit? Get a head start on the next milestone?
In order to give this post a semblance of usefulness, here's some things I've learned about that ultimate destroyer of projects: lack of motivation. It seems to me that motivation is very closely tied to hope. If I have a hope of actually getting something done, then it's easy to get motivated and do it. If not, then it's very hard. This means that when I have a large, difficult task to do, motivation can be a problem. But after I break that task down into bite-size chunks, it becomes a lot easier. It's important to note that the nature of the task hasn't changed; only my perception of it. If I look at Frogwood only as the final product, then I'm staring at the mountain's peak from down at its base and the path looks impossible. So I just have to focus on the next bend in the trail, knowing that this trail will eventually lead me to the peak.
Another factor of motivation is inspiration. Inspiration comes to me usually from playing games that make me say "Wow, this is cool! I want to make something like this too!" That's why I'm playing more and more indie games lately. Indie games tend to be far more creative than big commercial games, and they're made by people like me! If they can do it, then so can I.
One of the biggest motivational destroyers I've faced is art. Or specifically, lack of art. I'm not an artist. The average 4-year old can make better art than me. When I start a project, I very quickly need art. I draw some stuff that looks like crap, and pretty soon I have a semi-functional game that looks like dog doo-doo. And there goes my motivation. I honestly haven't really found a good way past this one yet. I think the next time I do, I'm just making my game out of solid-color blocks. That'll still look better than any art I could come up with, and it'll work until I can find an artist who can see past my block game to what it could actually look like. The way things are looking, I may have to try this pretty soon...
My final point on motivation is the most important. Sometimes you just don't have any. You've been at work and school all day, and you're tired. You don't want to do any more coding. You've been staring at a computer screen all week. Usually at this point, most people including myself will just not work on their game. We've earned a break, right? Sure. But if you don't work on the game, it won't get done. The longer you don't work on the game, the harder it is to get back into it, and pretty soon the game you were once so excited about is added to the heap of unfinished projects. The point is, sometimes you just don't have motivation. But if you want to finish a game, you need to work on it anyway. It turns out, making a game is hard work and you just have to work even without motivation.
First, an introduction to the game. Frogwood is a 2D action-platformer. Think of a cross between Mega Man and Abuse, but in a fantasy setting. Here's a pic:
Keep in mind this is pretty much the very beginning of development. Currently, you can move around and jump. The map uses parallax scrolling on the different layers. This picture has 2 layers of grass, 2 layers of mountains, and the moon stays stationary in the background. It has support for different platforms with different friction values, so we can make ice or whatever. I also got slopes added today, but we don't have any art for that yet. I haven't yet figured out how to make the sprite walk smoothly down a slope. Currently he just kind of stumbles down.
The game will use elemental themes for the different levels in a dreadfully cliched manner. When you beat the boss at the end of a level, you absorb some his magic essence, which gives you access to a new spell for that element. I'm shooting for 10 levels, and I won't call it finished with less than 6. I have a tentative timeline I'm working from, with the goal of having an official first version by the end of summer. After that I plan to keep adding onto it until it's a game I would be willing to pay at least a couple bucks for. I don't plan to make any money off this; it's just for my resume. But by now I feel like I have the skill and drive necessary to complete a project like this. If I can finish this one, it'll make all my other failed projects worthwhile.
Hello Gamedev, and welcome to my journal. Like many others, I've started this journal in hopes of gaining additional motivation to keep working on my projects. If I gain some followers while developing these projects, so much the better.
I'll start by introducing myself. I work as a Jr. Programmer at a small software company in Layton, UT. I am 30 years old and still working on my BS in Computer Science at Weber State University. My main interest has pretty much always been game development. While working toward that goal I've found it to be a very good fit for me. As a programmer I constantly exercise my technical side. With games, I can also explore my creative side. I've been lurking around this website for time out of mind, almost from the beginning. I contribute when I feel I have something useful to say, which doesn't happen very often. I have a number of other interests outside of computer games. In roughly my order of interest, these are music, game design, language, and earth sciences (geology, geography, etc.)
Anyways, on to the projects! The main project I'll be talking about here is Frogwood. This is a game I started working on with a friend from school last year. We got some basic functionality done, but we decided to switch from C++/DarkGDK to Java/JMonkeyEngine. I only have 2 classes this summer so I've set a goal to have this game done by the end of the semester. I've created a working design doc/development schedule to follow. My friend Lucas is doing the art, which has always been my primary difficulty with making games. And I've found a composer here on Gamedev who's helping with the music. Overall I'm really pumped for this project. I think our chances for success are pretty high.
In my next post, I'll talk about specifics for Frogwood, and probably post a screenshot. Maybe by the end of the week I'll have a simple demo to put on my website. Thanks for reading!