Friday, January 2, 2009

DirectX learning experience

I decided to devote some of my holiday vacation time to learning 3D programming in Direct X, for the following reasons:

1) Most new games are 3D, if I want to work in the game industry I am going to need to get a great deal of experience in 3D programming.
2) DirectX is fairly standard (though not the only option for 3D programming, there is also OpenGL, etc.) and it will be a good skill to show on a resume.
3) I would like to make Rina and I's next game in 3D.

So I spent a good many hours over a week period going over Direct3D tutorials, and samples, and came up with the following conclusions:

1) The learning curve is a bit difficult, especially if you are not very familiar with Matrix math (its been a while since I've used them)
2) The set of things the library does for you out-of-the-box is much more limited that I thought.
3) For some reason I couldn't find any good DirectX books in any nearby local bookstores (I checked at least 6). I did find many XNA books, which have some of the same content, but I prefer a DirectX 3D-only book. There is several of these on Amazon, but its a mystery to me why the bookstores stopped carrying them.
4) Mesh export from Blender works pretty well, except the type of materials exportable is limited.

I was able to make a test mini-engine with the following features
1) Add objects to the scene based on '.x' files, with a position, scale, and rotation.
2) Shadow support using shadow maps and custom shaders (using HLSL)
3) Ability to pick an object with the mouse cursor and move it around freely
4) Ability to rotate around with the camera

In most cases I took code from a example and tweaked it a good bit to get the results I liked.

Near the end of this period I decided to write code to do object animation based on frames exported from Blender. The only API call I could find to import animation from an .x file required storing an entire structure of all the bones, which is beyond the level complexity I was looking for. I simply wanted to say 'play frames 5-10' without worrying about the low-level details, but it seems as if DirectX doesn't provide this functionality, you have to write alot of code yourself to preform this action, which I consider pretty basic.

So I ended up stopping my DirectX 3D studies as my vacation ended, though I was not able to complete this last part. I decided that I had a good sample of 3D programming in Direct3D and I would now do some experimentation in a game engine, to see how much easier things were. Since I am not being too particular about the graphics in the earlier stages of the game design (this is just a hobby project at present), I don't need that much control of the low-level elements.

So what game engine will I use? That will be covered in my next post.

until next time!

Monday, December 29, 2008

A month after release

Its been over a month now since release, and I've learned the following things:

- By posting advertisements on several game and Starcraft-oriented message boards, I was able to get a nice amount of unique page hits to the game's web page (+550)
- There was a good amount of interest in the game's screenshots. Since I changed the images several times in the last few weeks, so its hard to get an accurate count, but the total number of image clicks is around ~450
- The download count was very low, around ~40-50 total downloads.
- A few weeks ago I added the ability to track how often people were playing the game (which can be disabled with a command line flag). From this I learned the following:
- Most people quit after a short period of time, after 3-20 minutes and just a handful of games (~1-3)
- One really nice person in Texas played for a whole 3 hours (!!). Thanks whoever you are!
- There was a good amount of game starts without game ends, which means the game may have crashed (or been closed forceably). In the future I need to be more careful to test on several machines to catch potential crashes.

The most important thing I learned here is I can attract a good amount of people with enough advertising, so I just have to make the game more interesting and more pretty so more people want to download, and play longer (:

To that end, I've decided to do some 3D programming. I'll discuss that in my next post.

Wednesday, December 10, 2008

Game review: Wonderland

Wonderland is a (originally Japanese?) free 2D MMORPG, and as you expect they make their money by having for-pay items (Not sure if they are actually making money, though. The web page seems to be copywritten since 2006).  I'll give my opinion about the game, although keep in mind I've only played a few hours.

- Download was pretty long and had some problems working on my Fiance's laptop.

- Character creation is a bit on the overly-simple side, with only a few choices like your element (earth,wind, etc.), and your mix of 5 stats (str, int, etc.).

- At the beginning of the game you start in a non-multiplayer area that serves a warmup for the game. At first it was confusing (since I didn't see any players there), but overall it was a nice idea, and contributed to the story of the game.

- You aren't forced into any story (except the intro where your boat is shipwrecked). This is ok for those who just want to level-up like crazy, or randomly explore (both which I enjoy), but I think it would be nice to give you a little more story up-front. I'm not sure how the popular MMORPGs do this (FF11, WOWW, etc.). I loved exploring in Ultima 7, but at that game there is a nice series of events that pull you into the game's world (and are forced) before you begin exploring. This decision to focus less on story may be a purposeful one in order to work within the game's budget, given it is a free game.


- The areas full of people trying to sell their wares, or at least show-off their houses, are a bit annoying, and hard to navigate through. I imagine this happens in other games as well, but making those areas more clearly marked off would be nice.

- The overall atmosphere of the game is cute, with very nice graphics and happy music. However, I feel it is a bit 'too' cheery sometimes. This can be a good or bad thing, depending on your target audience. If its a younger age group, this may be a perfect atmosphere. 

- The attack system is very similar to that from old Nintendo RPG games (or even newer PS RPG  games), where you have several different options in turn-based combat. I don't mind turn-based (as long as the tactics are interesting enough), but I think allowing your player to move around on the battle field adds a necessary level of depth, especially for new games.

- Having and fighting with your own pets is a nice feature, and the social messaging options (show hearts, musical notes, etc.) are nice.

- I remember playing a game similar to this a few months ago which had a nice full-screen map of the entire land, which made me curious to explore the various corners of the world. This game has a map of the nearby area, but I haven't found a way to show a larger-scale map.

- I haven't played long enough to judge this well, but there seems to be alot of interesting items and things you can buy to customize your house. This is to be expected, since the game makes its money this way.

- Some of the super moves seem a bit unrealistic (like a car running over the enemy). I guess this is good for the younger/less serious crowd.

- Since I'm struggling with my game's graphics, the most impressive thing about this game is the graphics quality. 





Thursday, December 4, 2008

3D vs 2D

Back when I first started programming, pretty much everything was 2D. Since then, I have seen the gradual 'infiltration' of 3D technologies, watching frame rates increase and approaching truly 'photo-realistic' images. 

I haven't done too much extensive development with 3D, although for my next project I may try tackling something fully 3D (or an online flash game). The reason for my resistance to 3D development is there seems to be so much extra work required, especially regarding content-creation. 3D models, textures, shaders, animations,etc. - everything seems to take much more time to develop, and performance is even more of a factor than before.

And in terms of interface, even some of the newer 3D games suffer from camera-rotation problems, or other annoyances that hinder gameplay. Also, even if the state-of-the-art 3D still isn't close to true 'photo realistic', we have along way to go there as well.

On the other hand, if you do everything right the cinematic enjoyment factor can be increased many fold. And in many cases you actually save development time and add an extra dimension of interaction of the game.

In any case, 3D is here to stay - but I still wonder if its possible for a one or two person team to make a better quality 3D game, when compared to a 2D game (given the same amount of time). 

A few months ago I spent a bit of time evaluating (free) 3D engines, but nothing seemed to work straight out of the box, and look pretty. Too much to expect, I guess. I'm sure if I pick one and work with it I can customize it to my needs, but comparing that to the ease-of-use of the Allegro library (mostly 2D) there is still a big gap.

Oddly enough, all of the unit and building graphics are first made in a 3D program (recently, Blender), and then rendered to 2D sprites. I have the feeling that if I had a good 3D engine that was easy to use, I could convert ARTSG to 3D in a few weeks time. But does that engine exist? 

Hmmm..

Wednesday, November 26, 2008

First week: second look

Its been about a week since I made first public release of ARTSG, and statcounter.com says I have 218 unique visitors. However, since that site tracks unique visitors using cookies I know that number is a bit inflated, and includes my IPs as well. Doing a unique count of the raw logs gives ~144, which means I had about 140 unique visitors or so.

My first screenshot (the most commonly clicked on) has 61 views, which means about 40% of users clicked on the screenshots - not bad!

And finally, the number of downloads was about ~10. I actually had 6-7 people download the game and make comments on either blizzforums.com or allegro.cc. Those really helped, and I've already put most of those enhancements/bug fixes into the game.

So now I am continuing on with my plan from the last post - I need to improve the screenshots a bit in order to get a few more people to download the binary. To that end, I have changed the background texture (thanks to a great program called 'Genetica', I suggest anyone who creates textures to check this program out), as well as updated some of the unit graphics using Blender. They are still not yet pro-level, but a bit better than before.

Another problem is that since most of my game advertisements are via normal message boards, the traffic generated by those will naturally decline as each post gets pushed farther down each list. Fortunately allegro.cc was nice enough to list me in their depot, and I've already gotten ~20 hits from there, though there is also a 'recently updated' section of their depot, so I expect my traffic to decrease from that source as well.

So where else? Maybe sites like download.com and tucows? Or maybe I should wait a bit longer?

In any case I'll try to make my next post a bit more about the details of development, because all this web-access and advertising talk probably bores some of you (:

Until next time...

Friday, November 21, 2008

Shocking but true....

Its true my first public online release (1.85/1.86b) has only been advertised for about a day, but the statistics already tell an interesting  (and sad) story. 

Number of unique page views (yesterday): 87  (thanks everyone!)
Number of views of all screenshots combined: 83 (29 unique views of artss1t.jpg)
Number of downloads: 1  ):  (Thanks Australian user!)

Yeah, that last figure is a real shocker. I know that RTS games may not be the most popular these days, and furthermore my game doesn't exactly look professional, but darnit I spent alot of time on it! 

So the lesson here is: If your game isn't 'pretty' enough to get them in the front door (i.e. actually downoad and play), and other features you add are useless (except for your own enjoyment).

Based on this my next series of release is already decided - improve the visuals so I get a bit more downloads. The good news it this can be done without much programming, though a refactoring of the image logic may be needed because I am not assigning a static to each image. My code makes the IDs unique, but not static - so if I add an image in between code somewhere It will probably mess up all my images. Anyway, have to think about that a bit.




Thursday, November 20, 2008

Classic games and game development

I have to admit that when I start to think about what type of game I want to develop, I usually end up something like one of the classic games I enjoyed so much years ago. Although creating only clones of other games shows a lack of creativity, it is a good exercise to think about what makes your favorite games fun, and how you can put that 'goodness' into your own game development projects.

I didn't have a Nintendo until I was in high school, and since my dad worked at IBM I was brought up in a house full of PCs, hence most of my favorite games are PC games.

Here is a list, along with some commentary on what makes them fun. In most cases these games have had many similar games in the game genre, so what I'm interested in is what makes them unique - basically what makes them so addictive! Also in all these games what matters most is how all the elements of the game work together, its rare that I like a game due to just one element of the game.

Starcraft - For some reason after 1000s of games, I still never get tired of playing this game (though I haven't played it too much in the last few years). What sets this apart of from RTS games (of the time) is that each race had their own unique units, with just the right amount of units and just the right balance of tradeoffs for each units (cost, movement speed, tech tree required, etc.). Starcraft has had so many releases which refine the game balance and fix bugs, and I think that really shows. And each unit's unique characteristics allows for a (nearly) endless amount of different strategies. The 2D sprite graphics are also very nicely done.

Smash brothers - I really can't think of too many similar games to this one, definitely the best 'party' game I can think of, where a bunch of people sit down and just beat the heck out of each other (in a fun way (: ). The game's units lack balance, but that adds an extra challenge and tension to the battle. What I love about this game is they use a 3D engine to achieve a nearly 2D-like game experience. The only time you really notice it is when you pause game and move the camera around. Also, I think they did a great job with the control system - how you can do many different types of moves with subtle directional changes. Finally, many people dislike this, but I think the way they implemented the block bubble (grows smaller as you hold down block and your appendages become open to attack) is really unique.

XCom (1,2,3) - All these games are great, especially of the atmosphere they create. The tech tree is diverse, and also the base-management part of the game, and how that is integrated into the battle system (your base can get attacked by aliens, etc.). The many levels are very well-designed, with many stories (8+?) and different types of locations which each have their own tactical challenges and atmosphere. XCom3 also added the real-time game mode, which added a whole new dimension to the game. The same game also had a bug where if you didn't do enough research in the early game, you couldn't complete the game (very bad!).

Ultima (6,7, 8) - One word: "explore". This game for me really gives the feeling of exploring a huge world, with a myriad of cities and townsfolk, forests, dungeons, etc. What was amazing was the size of the world, and all the little surprises you stumble upon while exploring - there even were many readable books which greatly contributed to the game's backstory. I haven't tried many 3D games of this genre (Morrowwind?), but for some reason I feel they don't capture the same essence of this series. And not only was the world huge but most of the time you were free to explore, not being locked down by game conditions, etc.

Twinsen's Odyssey - Though the story wasn't that great, something about the look and feel of this game made me want to keep playing. I guess I have really grown to love isometric-perspective games.

Jagged Alliance - Similar interface to XCom but each character's unique traits (commentary, conflicts with other characters, skills, etc.) made it interesting. The weapons also seemed realistic and difficulty level was insane on some of the levels.

Final Fantasy series - One of the few console game series that I really love. Similar to Ultima in some ways, but what Squaresoft does better than anyone else is adding a polished cinematic experience to the game - basically their CG rocks (: They are also great at maintain core game concepts across the entire series, while adding new elements here and there to keep your interest. Final Fantasy Tactics is also a great game, with small level size but excellent storyline and great tactical challenges (similar in some ways to XCom).