Intel sponsors gamedev.net search:   
mittentacularBy mittens      

Monday, January 28, 2008
Since I didn't get a chance to finish last night's post, consider this the aptly-named second installation of the yesterday's unfinished dev entry masterpiece. As I was saying, the first things I worked on over the weekend were level geometry rendering, collision detection and response (player/enemy-to-stage and bullets-to-enemy), and the enemy overmind, which will spawn the enemies as-needed and in whatever player-screwing pattern would best match the length into a given match.

Once the more gameplay-inclined features I wanted to have implemented by the end of the weekend were finished Saturday afternoon, I thought I'd take a bit of time to improve the overall visuals of Asplode!. Originally, I didn't have a great idea about how I'd get the game's retro-ish look aside from just using basic geometric shapes with edge outlines. A lot of Kenta Cho's games, for example, perform a "luminance" pass on the game at the end of rendering which helps his titles achieve the brighter, neonish color palette in some of his games. Geometry Wars, on the other hand, just chooses some brights along with a surprisingly noticeable bloom filter and entities which consist solely of an outline with no inner-fill. I had originally planned on doing solely a luminance filter akin to Cho's work but, in experimenting with a fairly simplistic bloom filter with a very small blur area, I think I've managed to achieve a pretty decent look. Here is the evolution of that:



Once that was done, I played with the ship movement code a little bit. In the process of doing this, I realized that, for whatever reason, my keyboard imposes a three-keys-at-once limit when using certain characters. For Asplode!'s keyboard input (there will eventually be 360 controller input as well) I'm using WSAD for ship movement and the arrow keys for aiming. I have no idea why this limit is imposed or if it's solely a Microsoft Natural Keyboard issue but, if it's fairly widespread, I'm definitely going to have to make keyboard plus mouse input a viable alternative.

The next graphical feature I worked on was the inevitable particle engine. Rather than using something incredibly fancy that could be reused in future projects -- like I would normally do -- I chose to write a system that was custom-tailored for use in Asplode!. This system uses quad particles which have a base size along with a size magnifier in the opposite direction of the particle velocity to create larger particles depending on their speeds. I am, at the time of writing this entry, still working on this so, for now, here are some work-in-progress images:



And now for a conclusion like Assassin's Creed or The Sopranos would handle it: for the next entry

Comments: 1 - Leave a Comment

Link


Alright, now I'll write a real dev as opposed to the hardly-classifiable-as-a-cliff-note entry I made yesterday (well, two days ago at this point). As I sit here right now, I'm realizing that ever since I started development of Asplode! I have lost an average of about two hours of sleep every night. This is okay, though, because I'm using that time in such an awesome and enjoyable manner that I should be able to postpone the inevitable coding-all-day-and-night (eight-ten hours of work coding and then a night of game coding) burnout by at least a week. Maybe two. The point, though, is that Asplode! has become this incredibly enjoyable hobby that, I believe, I enjoy more with every successive night of work that I'm able to put into it.

My current development pattern right now is: gameplay feature, visual feature, gameplay feature, visual feature, etc.. By working in this manner I'm able to take a step back from either the graphics or the gameplay with every half an iteration and realize what needs tweaking as I go along. At this point, I'm tweaking the player movement every couple of days along with the various vector model graphics to try and get the game to be as close an approximation to the game I have envisioned in my twisted brainpan. Whenever I implement a feature, whether I'm happy with how it turned out or not (like the way the ship's firing is implemented), I leave it in and move on to something else to see if I can best pinpoint what was most boring/unpleasant, for me, about the feature while as I test the one I'm current implementing. So far, given the limited amount of things I have in the game still, this seems to be working pretty well.

The first thing I did was add a basic border to the playing arena to give a sense of the stage boundaries rather than just having the dimensions of the screen dictate the playing arena:


The simplicity and effectiveness of the simple border graphic ended up adding far more to the game scene than I thought it would; I was planning on having that simply be a placeholder but, I think, I like it enough to keep it in and build the game around that as the border of the game. I like having the border be a set piece of the game screen, as well, as opposed to the scrolling gameplay arena that Geometry Wars: Evolves has. That may change as the game gets more complex but, for Asplode! at least, I will probably stick with the well-defined boundaries. The next thing I implemented is pretty boring to describe but it, basically, acts as the manager for all enemy entities in the game. I call it the EnemyOvermind. Clever, I know. Here's a test of it spawning a bunch of enemies:


I had more, originally, that I was going to write about for this entry but, at this point, I'm realizing that I woke up way too early this morning and actually could use some sleep right now. I'll write about the rest of the weekend's work tomorrow night. Same bat time, same bat channel.

Also, No Country for Old Men was absolutely brilliant and I got 887,895 points in Geometry Wars this morning. Win.

Comments: 1 - Leave a Comment

Link



Saturday, January 26, 2008
I have more I could show, but for now here's a quick screenshot of the fancified graphics that I'm playing with:



Comments: 0 - Leave a Comment

Link



Wednesday, January 23, 2008
I've been steadily working on Asplode! every night that I can and, at the moment, I'm currently working on gameplay that doesn't translate well into screenshots. I have yet to ever actually finish a game so, on Sunday, when I was expecting to move on to coding the particle and luminosity effects I took a moment to realize that, if I have never finished a game before, I probably screwed up by coding something unnecessary too early on. Upon hitting this mental revelation I figured that, instead of working on what I was expecting to work on, I'd do a complete roadmap turnaround and work on some gameplay components before coding up the prettification stuff. So, now, my goal for Sunday is to have a roughly playable build of the game up and running -- I figure this will encompass having the player's ship movable (completed), shooting bullets (not completed), having a single enemy in (quarter-completed), the basic arena borders functional and visible (about a fifteen minute process to code), and bullets being capable of killing said enemy. Once all this is in I'll either work on adding another enemy type or some graphical component.

With all this said, meet the Pentabomb:



The introduction of the pentabomb in the game made me realize two things: that I'm capable of thinking of at least one way to make the name of the game and the gameplay actually related (not that it was hard, given the name of the game) and that I may need to tweak the edge geometry generation procedure. For the moment, though, let's just talk Pentabombs.

The pentabomb, as an enemy, is most likely going to be simplest of Asplode!'s entities. It's creation will be random and fairly common and it will travel at a near-constant velocity in a straight line until it can travel that trajectory no longer and must travel a new straight line until it meets its timely demise. The base score for killing a pentabomb will be low, since it takes as much effort to kill as it does a paralyzed fish when you're armed with harpoons with miniature nuclear bombs at their tips. The usefulness of the pentabomb, though, is that it will be the primary gateway into Asplosion Chains which will be the quickest way to net points in the game. Whenever a pentabomb is destroyed, it will set off a unique explosion that will set off subsequent explosions in nearby enemies which will, so long as a pentabombs initiated the chain, set off explosions of their own to continue the combo chain.

From a gameplay standpoint, the idea is that the player may not always want to blast the potentially numerous and annoying pentabombs until certain moments in the game when there is a potential for not only a large enemy asplosion chain but, also, a chain consisting of numerous pentabombs to increase the score multiplier of the entire chain. Whether any of this will translate into actual "fun" gameplay has yet to be seen, but it seems like a decent way to make even a basic, primarily harmless (unless the player runs into it) enemy an asset to the player.

In other news, both Burnout Paradise and Cloverfield are totally rad.

Comments: 3 - Leave a Comment

Link



Thursday, January 17, 2008
Comes the workspace that brought you the Asplode! logo:



Comments: 1 - Leave a Comment

Link




I think I have a winner here. This was totally in-game too. None of that prerendered crap that's all the rage these days.

Comments: 3 - Leave a Comment

Link



Tuesday, January 15, 2008
The productivity boost that I've witnessed since switching to XNA2.0 is absolutely absurd. Unlike the work I did with Rawr 1.0 (the DirectX 9/10-based framework) where I wanted to ensure that if anything was used in the framework it was all written by me, I want to actually take advantage of all the utilities that something like XNA offers to make my life easier. The goal of Asplode! is to actually end up with a full game (well, "full") for the first time in my development career. When it's done I want people to actually be able to play and enjoy it as a game not as a tech demo or what have you.

When I started work on the game on Saturday morning at an obscene hour due to my lovely little feline making an absurd amount of noise I searched around the Internet with no real purpose and I re-stumbled across the work of Kenta Cho. I've played Gunroar in the past and enjoyed it well enough but it wasn't until Titanion that I fell head-over-heels in love like a virgin landing first-row seats in the Victoria's Secret fashion show. The vector graphic style is something I really dug, especially given the joygasm-fest that I wrote about regarding Geometry Wars (and, yes, Space Giraffe is almost equally fantastic).

Shortly after that (immediately after that) I went to neural-storming up a way to efficiently generate the visual representation of the filled polygon with a specific edge outline. I thought about going totally Kenta and hard-coding the geometry into the game but that seemed a bit of a hack. If nothing else, that approach didn't lend itself to any use in future projects very well. What I ended up deciding was that I could use an XML capable of generating the desired model with minimal input necessary; in this case, that input was: a polygon type, fill color, edge color, and the base vertices for the polygon. So, for a quad with a triangle hat the XML file would look something like this:

 <?xml version="1.0" encoding="utf-8" ?>
<VectorModel>
	<Polygon Type="1" LineWidth="5.0">
		<FillColor r="0.3" g="0.3" b="0.3" a="0.3"/>
		<EdgeColor r="0.9" g="0.9" b="0.9" a="0.9"/>
		<Vertices>
			<Vertex x="100.0" y="100.0" z="0.0"/>
			<Vertex x="80.0" y="-100.0" z="0.0"/>
			<Vertex x="-80.0" y="-100.0" z="0.0"/>
			<Vertex x="-100.0" y="100.0" z="0.0"/>
		</Vertices>
	</Polygon>
	<Polygon Type="0" LineWidth="6.0">
		<FillColor r="0.3" g="0.3" b="0.3" a="0.3"/>
		<EdgeColor r="0.9" g="0.9" b="0.9" a="0.9"/>
		<Vertices>
			<Vertex x="0.0" y="200.0" z="0.0"/>
			<Vertex x="100.0" y="100.0" z="0.0"/>
			<Vertex x="-100.0" y="100.0" z="0.0"/>
		</Vertices>
	</Polygon>
</VectorModel>


This produced a horrible image that looked like this. Once I cleaned up the generation of the edge geometry -- and it is geometry, since I felt that using an edge outline shader would not defeat the purpose of the look along with being more problematic in certain cases -- the resulting hat-wearing quad looked better:


Tonight I set to work on fixing up the look of the vector model on top of miscellaneous other game fix-ups. I also made a slightly more attractive model:


It doesn't look super awesome right now by itself but I have faith that, by the time I get more aspects of the game's visual style in place, it'll turn out looking pretty neat. Then again my brain is considered by many people to be a far more pleasant and imaginative place than reality could ever even hope to be.

Comments: 0 - Leave a Comment

Link



Friday, January 11, 2008
Since the work I'm doing near-daily at my job has reached a critical overlap with the work I was doing on Rawr I'm putting the project on indefinite hold. In its stead I will be starting work directly on a game (not a framework; I'll only be adding to the framework on an as-needed basis during game development) that I'm calling Asplode!. All work is shifting to that and, as if to add insult to old-and-busted Rawr's injury, I'm titling the framework/engine for my XNA projects (did I mention I'm using XNA?) Rawr. I could call it something silly like "Rawr 2.0" but that just seems unnecessary. Anyway, here's old-and-busted Rawr's last-known form:



More details on Asplode! as they come available.

I've written in the past about my interest in color as it applies to scene composition and the effects that a well-constructed scene can have on a viewer/gamer. The case study tonight is the absolutely fantastic Geometry Wars (more) and, more specifically, the Retro Evolved "SKU." It's a game that was intriguing to me based on screenshots a year or so ago and one that, when it came to Steam, I used my cafe account (given to me in the days of my gaming journalism) to nab it and play it a few times. It was a game that made a favorable impression, overall, but it wasn't until I was able to get the game and play it with a 360 controller and a large television that it truly took on a life of its own for me.

Geometry Wars is, really, an incredibly fast-moving game that puts a gamer's hand-eye coordination to a test best described as an audiovisual gauntlet of the gods. Its graphics are nothing to write home about and, despite what all of the frantic screenshots may paint the title as, are a perfect example of minimalism in a game where you have pyrotechnics and glowing lines flying about at a near-incomprehensible rate. The player's main ship is little more than a seven-eight polygon claw and the first enemies that a player will see in the game (generally; they're tepidly random) are a purple quad, a green quad (each with a slightly different design), a teal diamond, and a purple pinwheel. The reason I went through so much extra typing to point out the colors of these "enemies" is that once a player gets into the game and the action picks up to a near-impossibly frantic pace the only way to really succeed in navigating and shooting your way through the card is to "transcend" simply looking at the dozens upon dozens of enemy ships and sensing/knowing their presence and potential course.

What's so interesting about the game is the ease and fluidity which it allows the player to slip into a sort of mechanical trance -- don't get me wrong when I use the word "trance" either as I don't mean that playing Geometry Wars is any sort of relaxing, lethargic experience. Successfully playing the game means that the player needs to operate without any hesitation in movement or shooting in order to plow through a field of enemies without any direct contact with them in any form (instant death). In order to do this the colors of enemies become synonymous to their shape and functionality as the game progresses to the point where, as you're moving through a, maybe, 300 pixel-wide box of space that gives your ship little-to-no easy way of escape unharmed, you must be able to determine which enemies to blast and how to navigate your ship in order to end up in a relatively "open space" (and I'm being generous with the usage of 'open') so that you can reorient yourself and plot the next course of action. What this equates to in-game is the ability to sense which enemies around your ship can be easily killed without any repercussion -- as blasting some will actually cause the enemy to split into two and, potentially, be detrimental to the course you set out for yourself through the neon-colored maze of enemies -- based on the functionality you have come to associate with certain colors.

All of the game's activity is made even more chaotic by the ridiculous amount of particle-composed pyrotechnic displayed on-screen at just about any point in the game. The explosions are huge and stylish, the weapon effects create mini-explosions, the vortexes (vortices? ) are swirling displays of sexycolor, and the game's "grid" is a living, moving entity which reacts to everything that happens within the framed-in bounds of the Geometry Wars game world. The definitively-colored enemies which each make a certain set of distinct sounds, the pyrotechnic display, and the music (a singular techno-ish track that loops throughout play and is largely forgettable) all combine to form a very uniquely Geometry Wars experience that I, needlessly to say at this point in the entry, absolutely love.

I will try to emulate these things in a uniquely-me fashion in Asplode! to the extent of my abilities as the artist, designer, and programmer of the game.

Comments: 2 - Leave a Comment

Link



Tuesday, January 1, 2008
The goal was to get some development done over the course of this break but, being the awesome people they are, my parents got me a 360 for Christmas. I followed that gift up with the purchase of a way-over-my-budget-but-zero-percent-financing-for-eighteen-months-is-amazing 42" LCD television capable of 1080p. It was the most expensive impulse buy I've ever made but, looking back six days later, it's one of the best decisions I've made. With the recent couch, television, and console purchase my apartment is finally starting to feel like an actual "home" rather than an extended dorm room. The result is my living room (yes, yes, it's barren in terms of color/decoration):



Anyway, that's as close to a dev entry as this is going to get. I'm going to go back to playing Crackdown/Dead Rising/Whatever else.

Also, as an edit, has anyone else run into this problem with Visual Studio 2008? It plagued my work project a month or so ago and, as of yesterday, it's screwing with the debug build of my hobby project.

Comments: 2 - Leave a Comment

Link


All times are ET (US)

The entries in this journal have all been posted, along with many more, at mittens' personal site at www.polycat.net.
 
S
M
T
W
T
F
S
2
3
4
5
6
7
8
9
10
12
13
15
18
19
20
21
22
24
25
27
29
30

OPTIONS
Track this Journal

 RSS 

ARCHIVES
August, 2009
July, 2009
June, 2009
May, 2009
April, 2009
March, 2009
February, 2009
January, 2009
December, 2008
November, 2008
October, 2008
September, 2008
August, 2008
July, 2008
June, 2008
May, 2008
April, 2008
March, 2008
February, 2008
January, 2008
December, 2007
November, 2007
September, 2007
August, 2007
July, 2007
December, 2006
July, 2006
June, 2006
May, 2006
April, 2006
March, 2006
February, 2006
January, 2006
November, 2005
September, 2005
August, 2005
July, 2005