Intel sponsors gamedev.net search:   
Journal of AardvajkBy Aardvajk      
Page:   1 2 »»

Wednesday, November 11, 2009


Just wanted to show off the new look to the website.

I'm using tableless web design now and properly separating the HTML content from the CSS styling. Anyone wanting to get their head around this can do a lot worse than checking out Douglas Bowman's video presentation on the subject.

It's proper cool for anyone still using tables. The float system of CSS is a bit weird at first but when it clicks into place, it is a joy to work with.

Note the little rounded corners on the main white page and the sidebar - that would have been a pain in the arse with tables and probably wouldn't work on all browsers, but was pretty much a breeze with CSS layout.

Site isn't up yet - I've finally given in and started using VS Web Developer and developing offline - but it's certainly getting more like I want it now.

Comments: 1 - Leave a Comment

Link



Monday, November 9, 2009
Very long time, no post by my standards. I'm still here and all is well but work and life have been a bit nuts recently.

Got the book I won in the recent competition through yesterday and it rocks. Thanks to all involved in that one.

I've been focusing mainly on web development experiments rather than gamedev recently but not much to show for it really. Still loving my job but it has kind of taken over.

I've actually just quit JuJitsu as well as I wasn't enjoying it any more. It's been a good year but I can't be doing with stuff outside of work that seems like a hassle. Need to find other ways to keep fit that take less commitment really.

That's all for now. Just wanted to break my silence and say thanks for the book.

Comments: 2 - Leave a Comment

Link



Wednesday, October 21, 2009
Busy busy learning ASP.NET. Love it, dead easy.

I've got a login system for my site so I can access an admin page, a private blog poster that creates files in my webspace ready to be formatted into a blog and a contact form that uses System.Net.Mail to send me an email from the site.

All of the programming jobs round my way seem to ask for ASP.NET, C# and SQL so if I can get this sorted and get access to an SQL database to play with, I might have a fallback plan if the current career goes breasts skyward.

Comments: 0 - Leave a Comment

Link



Sunday, October 18, 2009
Just a quicky - I've put a slightly better site up now:

www.aardvajk.co.uk

All just bodged together with Notepad and a quick plunge into CSS tutorials but I think it looks okay.

Comments welcome.

Comments: 2 - Leave a Comment

Link



Saturday, October 17, 2009


So I finally got my own website and webspace, happily hosting the image above for around £4.99 a month. Seems like a pretty good service and was recommended by a client so all good.

Nothing there so far but: www.aardvajk.co.uk is open for business, or I'm available at admin@aardvajk.co.uk.

The cogs thing didn't work out so instead I've been working on the above "stompers" which can either go up or down and crush Squishy if he gets stuck between them. Work fairly well and were easy enough to implement with Box2D.

That's all for now and I'll update the site with some better stuff soon.

Comments: 3 - Leave a Comment

Link



Wednesday, October 7, 2009
Took a quick break from Squishy tonight to develop a new command line tool.

Basically I've given up on SVN as I found it overkill for a solo developer working on two machines on a home network, plus having to manually remove files from the repository and manually add new ones was becoming a pain.

I then got sick of having to copy over the entire projects for Squishy and Squed to the laptop and back, especially since this is now a twice-daily chore since the weather is on the turn to winter and I'm taking my laptop into work to do some development at lunchtime.

So I've spent this evening writing a little utility called sync. You start in the root directory of your local copy and create a .sync file that contains the path to another copy.

When you want to update, you open a command prompt pointing at the root directory of the local structure, then just type "sync".

sync then builds a list of all the files and directories in the local structure and in the other structure, then takes the following steps:

1) Sort the contents of the two structures by path length, longest first
2) If a file is in the local copy but not the remote copy, delete it
3) If a directory is in the local copy but not the remote copy, delete it
4) Sort the contents of the two structures by path length, shortest first
5) If a directory is in the remote copy but not the local copy, create it
6) If a file is in the remote copy but not the local copy, copy it over
7) If a file in the remote copy has a last-modified date more recent than its partner in the local copy, overwrite the local file with the remote version

In other words, convert the local structure into an exact copy of the remote structure, but by only making the changes that are actually necessary.

sync ignores all files that start with a dot, so the .sync files and any other files I may need to have unaffected are left alone.

The sorting is to ensure that we only ever remove empty directories and we only ever create files or directories in parent directories that already exist, simplifying the process a little.

Obviously it performs no version control, but I wasn't using SVN for that anyway, just to automate only having to network-copy files when I needed to. But SVN would not automatically remove and create files and directories as needed, or deal with file renaming.

This is really designed very specifically for a solo developer to work on more than one machine, accessible by a local network (i.e. normal file paths, not urls) where you don't want to merge two versions but only ever one-way-update one version to another.

Have theory-tested it but wouldn't call it field-tested yet. Happy to release it if it is of use to anyone else.

Comments: 4 - Leave a Comment

Link



Monday, October 5, 2009


Evening. How's it going?

Decided on the drive home from work today that I want the world of Squishy to be based around a hub world that contains a large machine that is missing cogs. Squishy's task will be to collect the cogs and attach them to the correct parts of the machine so that when a lever is pulled, the machine will operate something.

Or something like that anyway. I just have an image in my head of a tall wooden tower surrounded by portals to the different worlds, and Squishy swinging around placing cogs on different pegs. Must be all the knocks to the head I suffered as a child.

Anyway, I needed to create the cogs you see in the image above. So far I've been defining shapes by typing the vertices into the editor manually, but this was a shape that I couldn't really figure out like that.

Rather than create a new tool, I created a new level, put a very big cog in it at 0,0 then drew the shapes on as map shapes with the existing vector drawing tools used to make the map areas (excuse quality of jpeg, Squed screens don't shrink down well):



I saved that as a level, then opened the Squed project and added a tool to save selected map shapes to a text file, in the same format that shapes are defined in the scheme file for the level type.

For example, in the scheme file the shape for an object consisiting of a square and a circle might look like this:

properties
{
    Shapes="2 0 0 c 3 8 6 p 4 -1 1 1 1 1 -1 -1 -1";
}


Reading left to right, 2 shapes, the first origin at 0,0, a circle of radius 3, second shape origin at 8,6, a polygon with 4 vertices (-1,1),(1,1),(1,-1),(-1,-1).

Obviously typing these manually is a pain for complex shapes, but with the new tool I can define the shapes visually and save them to a text file in the correct format, then copy-paste them into the scheme.

I also added some scaling tools that allow me to scale map shapes (relative to the world origin) or to scale actors (scales their shapes and quads relative to their centre).



All very useful stuff and will make more complex objects a lot easier to create now.

Next up, a system for attaching the cogs to pegs. Got some ideas about that but we will have to experiment.

Thanks, as ever, for reading and comments welcome.

Comments: 3 - Leave a Comment

Link



Saturday, October 3, 2009


Bit of a spot the difference but I hope having the two images to compare will show it off nicely.

Basically it is now possible to use a texture much larger than a single cell to texture cells, as per the rocks in the second picture, but without having to worry about generating vast amounts of tiles.

The game needs to support the circular tiles as well as sloping tiles and the potential combinations gets pretty huge. Then note the grass on top of the curved tile to the left of the right-hand button above - supporting this for all possible combinations would become absurd.

The system uses multitexturing and a pixel shader to extract the alpha from one texture and the diffuse from another as well as "telling" a tile where in its own little grid it appears - take the tile's position in the world grid, modulus it with the size of the texture (I call this the granuality in the code) then use this index to work out the texture co-ordinates for the larger texture.

Putting the grass on to is a bit more complicated and requires another pixel shader that first manually alpha blends the texture with a grass texture tile then applies the alpha from the shape image.

Beauty of this system is that changing the above to be grey rocks with snow on top will only require two textures, one for the rocks and one for the snow and the many tile combinations will be generated as they are rendered.

The editor will need a pretty major overhaul to be able to support this system which is probably the next big job.

Good to have my journal back. Missed being able to post the last couple of days so cheers to whoever got my GD+ working again.

[EDIT] Editor is sorted, wasn't as bad as I thought it would be. The editor now uses the same shaders as the game to generate both the map and the cell previews. Glad that was easier than I thought.

Comments: 0 - Leave a Comment

Link



Monday, September 28, 2009


I've been working on a silly little deformation shader to make the inside of the portals a bit more interesting.

As ever, you need to see it in motion. VIDEO HERE. I'd recommend watching in high quality and fullscreen to see the effect properly.

It's a pretty simple shader that I've come up with mainly by trial and error and will post here in all its glory:

sampler tex : register(s0);

struct INPUT
{
    float2 coord : TEXCOORD;
};

struct OUTPUT
{
    vector color : COLOR;
};

const float2 mid=float2(0.5,0.5);

float warp=0;

OUTPUT main(INPUT input)
{
    OUTPUT output;

    float2 t=input.coord;

    float2 a=float2(sin(warp),cos(warp))*(0.25*sin(warp*0.5));

    float2 p=mid+a;

    float2 v=p-t;
    float n=1-(length(v)*2);	

    if(length(t-mid)<=0.5) t+=(normalize(v)*(n*0.05));

    output.color=tex2D(tex,t);
    return output;
}






The external "warp" variable is just an accumulating timer that is incremented by the Portal instance. We use this as a value to move the centre of the deformation around in a circle and in and out relative to the centre, creating a nice, random looking movement without any sharp direction changes.

The rest of the shader just uses the proximity of the texel to the centre of the deformation to move the texture co-ordinate out in the direction of the texel to the deformation centre.

Looks okay. Not exactly what I planned but I guess it will do.

Next thing I need to start thinking about is some kind of toggle switch or lever that can stay in one state or the other without a weight on it. A cartoonish lever that you can either push or pull would be nice.

---------------------------------------

Quick update - set it up so that Squishy enters levels through portals as well now.

Rather than placing Squishy as an object in the level editor, you call a function in the startup script - set_entry_portal(int id) - with the unique ID of the portal.

When the level begins, the game automatically opens the portal and drops Squishy in from above, closing the portal when Squishy is moved to the middle layer and the player is given control.

If the entry portal is not set, no Squishy is created which might be helpful for cut scenes or something.

Assuming an entry portal is set, the camera starts focused on the centre of the portal and Squishy takes over the camera when he reaches the centre of the portal (within a small tolerance) so the camera movement is seamless.

VIDEO HERE showing the portal entry system.

Comments: 5 - Leave a Comment

Link



Saturday, September 26, 2009


Portals are now finished, as per the above.

VIDEO HERE.

I did mess around with some shaders to morph the image inside the portal but it didn't look right in the end so I'm just leaving it as it is. The image inside the portal is just a static texture as I'm not going to get too complicated.

Like all other entities, the portals can be sent a 1 to open or a 0 to close, and a -1 to close and vanish, meaning they integrate into the existing system really easily.

There is now a method in the script to send signals to objects by their IDs, so the portals can be controlled by pretty much anything now.

Hope you likey. Nighty night.

Comments: 5 - Leave a Comment

Link



Tuesday, September 22, 2009


I've been working on Cloud Portals tonight, which are going to probably be the way you enter and exit levels.

The above looks a lot better in motion - the ring pulsates and spins while the little blobs of cloud drift off and shrink away.

Squishy is currently masked off by a circle under the portal in the stencil buffer - eventually he will only be moved to this layer and the stencil enabled when he is within a certain range of the centre of the portal and both his arms are retracted, giving the illusion of him falling through the portal, which will then close.

Whether the arms will auto-retract or whether you will be able to swing over a portal without entering it remains to be seen. The latter is obviously more flexible but might get confusing.

Anyway, either way, the next step is to make portals an object that can be placed in the map editor and opened and closed according to an input so that they can be controlled by any other game event, then work on the actual layer switching system. The test above proves the concept from a technical perspective so it is just a question of actual implementation now.

Comments: 2 - Leave a Comment

Link



Saturday, September 12, 2009


Not a lot to say, but I've been working on having a large font to display messages like the level complete above.

This required updating my font generator program to allow me to specify specific letters to put into a font file so that I don't have to waste too much texture space. It can now optionally either generate every printable character or select characters from a given text string.

The above effect is rendering the text twice, once with ARGB(128,0,0,0) then again with ARGB(255,255,255,255) to create the drop shadow effect. This has the advantage that it should be legible over most coloured backgrounds and fits with the nice and simple, clean looking GUI for the game.

Hope you like. Small steps at the moment but all in the right direction.

Comments: 3 - Leave a Comment

Link



Thursday, September 10, 2009
Had my first big success in the new job today and got a job outcome for two clients that are on a programme that means big money for my company as a result, plus two people who'd been out of work for several years are now in paid employment. Good feeling. Got the day off tomorrow so celebrating tonight.

--------------------------------------------------

I have actually been working pretty hard on Squishy, but it is all mainly under the hood stuff and not really screenshottable. I've changed the system so that a level no longer requires an instance of Squishy to run and Squishy can be deleted when he dies, so there is no longer need to track existance state within every method.

I previously had the game mode track an actor instance to update the camera which meant I had to be really careful to ensure the actor was there all the time and was not sure how to approach informing the game state if the actor got deleted.

Now, instead, I have a camera (just a D3DXVECTOR3) that is accessible by the actors in their update methods. If it is just left alone, it stays pointing at one point on a level, but Squishy can update the camera in his own update method. This way, there is no need for the game mode to be aware of any particular actors.

I've also improved the render-to-texture system with a RenderContext class that binds to a Texture (or the back buffer) and a DepthStencil, has an Apply() method that sets them as the current render target and automatically releases them, which has tidied up a lot of the code.

--------------------------------------------------

I finally overcame some image generation problems when I discovered that Gimp has a Colour To Alpha method.

When I discovered this, I temporarily made the sky solid white in Squishy and zoomed the camera in a lot then print-screened Squishy (he is procedurally rendered you see).

I was then able to convert the white to alpha using Gimp's tool, and save it as a 256x256 icon. IcoFx then did a sterling job of shrinking down to the other icon sizes (IcoFx is the best in the world for down-sizing icons in my view) and I now have an icon with proper alpha rather than some horrible stray pixels around the edge.

--------------------------------------------------

Beer, beer, beer. Beer, beer, beer. [repeat until incomprehensible then fade out]

Comments: 0 - Leave a Comment

Link



Monday, August 31, 2009


The water is back in Squishy again. My friend was playtesting this for me over the weekend and convinced me that the water was too nice-looking a feature to leave out.

I've implemented the buoyancy differently this time. It's all very fake but works quite nicely. Objects sink slowly in the water until they come to rest on the bottom and Squishy just sort of floats about, but you can make him swim up and down with W and S when your arms are retracted.

Sound-wise, I'm not going to worry about modifying the sound effects while under water. I think I'll just have two loop sounds, one for above and one for below the water. The one for below will just loop constantly when you are beneath the water level and the one above will loop when you are out of the water but have its volume modulated by how far from the surface you are.

Need to get Audacity installed on the laptop so I can play about with sounds on the move.

--------------------------------------------

[LATER] Got the sounds above working now. It works pretty nicely really. Found a couple of nice effects on freesound.org which I've butchered into loops in Audacity and the game special-cases the water sound effect since it has a Y position but no X position so couldn't be handled by the existing positional sound system.

Really glad that I decided to put the water back in now.

--------------------------------------------

Now that I'm working on the projects between the PC and the laptop, I decided to finally figure out Subversion tonight.

I don't claim to be an expert now or anything but I've got repositories set up on the PC for both Squishy and Squed and working copies on both computers and I can update to and from the PC repository on either machine as long as I'm within wireless range of my house on the laptop.

Cool.

Comments: 4 - Leave a Comment

Link



Sunday, August 30, 2009


Spent this morning implementing the First Time Run dialog for Squishy. If no config file exists when the game is run (i.e. the first time), the game displays the above Windows dialog at startup, allowing you to set the graphics options from your desktop.

Was pretty easy really since all the code to detect the graphics capabilities was already written and tested. ResEdit made making the dialog look pretty a breeze as always.

Little details, but these are what make the difference.

I've updated the installer to now use the correct DX runtime, but the problem is that the Nov 2007 runtime is 60 meg so the installer is huge. I think I'll probably go with two installers for demos, one with DX and one without.

Nice to have actually done something with a visible result today though. Last day of the holiday tomorrow then back to work so hopefully I'll achieve a bit more before then.

Comments: 0 - Leave a Comment

Link

Page:   1 2 »»

All times are ET (US)

 
S
M
T
W
T
F
S
1
2
3
4
5
6
7
8
10
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

OPTIONS
Track this Journal

 RSS 

ARCHIVES
November, 2009
October, 2009
September, 2009
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
October, 2007
September, 2007
August, 2007
July, 2007
June, 2007
May, 2007
April, 2007
March, 2007
February, 2007
January, 2007
December, 2006
November, 2006
October, 2006
September, 2006
August, 2006