<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF
	xmlns="http://purl.org/rss/1.0/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel rdf:about="http://feeds.garagegames.com/rss/blogs/developer/101767/">
		<title>Blog for Steve YorkshireRifles Acaster at GarageGames.com</title>
		<description>Blog feeds for Gamers and Developers in the GarageGames community.</description>
		<link>http://www.garagegames.com/</link>
		<image rdf:resource="http://www.garagegames.com/images/GarageGames_logo_small_w.gif" />
		<dc:date>2008-08-07T23:19:53+00:00</dc:date>
		<items>
			<rdf:Seq>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/101767/15218"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/101767/15066"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/101767/14898"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/101767/14681"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/101767/14653"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/101767/14545"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/101767/14435"/>
			</rdf:Seq>
		</items>
	</channel>
	<item rdf:about="http://www.garagegames.com/blogs/101767/15218">
		<dc:format>text/html</dc:format>
		<dc:date>2008-08-06T16:44:01+00:00</dc:date>
		<dc:creator>Steve YorkshireRifles Acaster</dc:creator>
		<title>Walk and Chew Gum Conundrum</title>
		<link>http://www.garagegames.com/blogs/101767/15218</link>
		<description>Actually run an aim-down-sight animation so that when the player looks up and down it aligns correctly with the eye node. &lt;i&gt;It ain't as straight forward as it sounds...&lt;/i&gt;&lt;br&gt;&lt;br&gt;This counts as multi-tasking, as does walking and chewing gum. Multi-tasking seems a big thing in the games development industry - &lt;i&gt;which kinda makes you wonder why there aren't more women working in it.....&lt;/i&gt;&lt;br&gt;&lt;br&gt;As a one-man dev machine, multi-tasking is rather essential, regardless of the average male's inability to perform it. The average male in this case is my player/ai model.&lt;br&gt;&lt;br&gt;&lt;img src='http://img529.imageshack.us/img529/4397/aimdownsight1yf3.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;I mean ... how hard can it be?&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;i&gt;NOTE: I'm using a custom, scratch built model and armature set, so I've got to come up with all custom animations, my rig isn't compatible with Blue/Orange Guy setups or anims. If you're scratch building player models yourself -- you might find the info below useful. Ignore the terrible hands on my models.&lt;/i&gt;&lt;br&gt;&lt;br&gt;So what I needed was an aim anim - easy enough, boot-up Blender, align eye, mount0 and where the weapon sight would be. Then it's a simple case (it wasn't) of having my aim anim play over the blended look animation. And this is where it all went wrong.&lt;br&gt;&lt;br&gt;My aim aligns fine in the root along the horizontal, and it aligns fine at the extremities of the look anim (that's up and down for real people), it's just the bits in between where the aim wandered out of alignment. Unfortunately that makes up 160 degrees of 180. Ah....&lt;br&gt;&lt;br&gt;There appeared to be a disparency between the angle of looking and the speed at which the animation plays, it's just not a constant speed as the mouse moves. It's quicker at the 45 degree angles than the 90s where it slows down. Time consuming trial-and-error tweaking of my look animation was called for, but it soon became apparent that wasn't going to work - or if it was, it wasn't going to work this decade.....&lt;br&gt;&lt;br&gt;So here's a tip, for anyone trying to align the look animation to the actual up-down speed of the mouse movement. Go into Player.cs and find this bit.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='codeblock'&gt;&lt;pre&gt;   minLookAngle = -1.4;&lt;br&gt;   maxLookAngle = 1.4;&lt;br&gt;   maxFreelookAngle = 3.0;&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;MinLookAngle is up (Negative Number)&lt;br&gt;MaxLookAngle is down (Positive Number)&lt;br&gt;and MaxFreeLookAngle does exactly what it says on the tin. Ignore this.&lt;br&gt;&lt;br&gt;For Min/MaxLookAngle zero is horizontal level, the centre of the screen, -/+1 is 90 degree up or down, literally vertical. So a 45 degree angle is -/+0.5 and each 0.1 is 9 degrees - so technically you could use that as a guide for your look anim -- except the rotation speed isn't constant when moving the mouse to look up and down - so you can't. Hence the problems in the first place.&lt;br&gt;&lt;br&gt;When aligning aim and look animations, having the crosshair visible is a must, you need to know the centre of the screen. And remember, in you look anim, you can't adjust any bone that you moved for the aim anim, because it'll start messing with them and that will put your aim off.&lt;br&gt;&lt;br&gt;1: Set both LookAngles to 0. This prevents any vertical movement. Check your aim anim is aligned - if it isn't here it won't be anywhere. &lt;br&gt;&lt;br&gt;2: Next set your furthest look down on both Min and Max. +1 is 90 degrees down, I set mine to 0.7 (63 degrees) just to stop the player shooting himself in the foot. Check the animation aligns, if it doesn't, tweak as neccessary until it does. Repeat for the up angle (-1 for 90 degrees, -0.8 for 72 degrees, -0.7 for 63 degrees, you get the idea).&lt;br&gt;&lt;br&gt;3: On my blended look animation, level/horizontal is set at frame 8. Fully up is 1 and fully down is 15. This gives a value of 7 frames either way, an odd number so I can find the middle of the animation sequence. I stuck an animation key here and technically that's 45 degrees regardless of your whether your Min/Max value is 1.0 or 0.7.&lt;br&gt;&lt;br&gt;4: Check the alignment and tweak as neccessary until it lines up. And that should do it.&lt;br&gt;&lt;br&gt;I did cause myself a few extra problems. Having a single bone to the spine just wasn't going to cut it and I reckon at least 2 are a must.  And of course I wanted a fairly nice third person aim too.&lt;br&gt;&lt;br&gt;&lt;img src='http://img529.imageshack.us/img529/7122/aimthirdpersonmi3.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Over-the-shoulder-cam for that Gears of Yorkshire vibe&lt;/i&gt;&lt;br&gt;&lt;br&gt;The crosshair only shows up when the player aims &lt;i&gt;and&lt;/i&gt; is in Third Person view. In both First and Third person the HUD (in my case currently just the health bar) disappears to give a clearer and less distracting view and the camera zooms in dependant on what weapon is being used.&lt;br&gt;&lt;br&gt;&lt;a href='http://www.youtube.com/watch?v=Dj3qW1bKjEg' target=_blank&gt;Obligatory poor quality YouTube vid of it all in action&lt;/a&gt;&lt;br&gt;&lt;br&gt;It all took a bit longer than planned --- though considering &lt;i&gt;everything&lt;/i&gt; takes longer than planned it probably took just the right amount of time. There are many &lt;i&gt;techniques&lt;/i&gt; available to make life easier in developing with Torque (TGEA1.7.1) - it's just a question of finding them.&lt;br&gt;&lt;br&gt;Now, back to urban content creation like I was supposed to be doing before I got distracted by animation tweaks.&lt;br&gt;&lt;br&gt;&lt;i&gt;edit: disparence isn't a word, it's disparency&lt;/i&gt;</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/101767/15066">
		<dc:format>text/html</dc:format>
		<dc:date>2008-07-12T23:30:23+00:00</dc:date>
		<dc:creator>Steve YorkshireRifles Acaster</dc:creator>
		<title>8 Million Shades of Brown</title>
		<link>http://www.garagegames.com/blogs/101767/15066</link>
		<description>My first developed game was a text adventure on the Spectrum 48k, way back in the early-to-mid-1980s (history's greatest decade!). The humble Specky, brainchild of boffin Sir Clive Sinclair (when inventors wore white coats and still looked like mad scientists), had a range of 10 colours. My text adventure was black and white.&lt;br&gt;&lt;br&gt;&lt;img src='http://img141.imageshack.us/img141/2429/rollinghills1xx0.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;There's colour in them there rolling hills!&lt;/i&gt;&lt;br&gt;&lt;br&gt;Then came the Amstrad 64k, initially with a green screen, but then a colour one. Little more than a glorified Specky, but those extra 18k gave a whole new world of colour.&lt;br&gt;&lt;br&gt;The appearance of the Amiga was a big boost to colour (1-2meg memory!). I remember a graphics/art package with 4096 colours!&lt;br&gt;&lt;br&gt;&lt;img src='http://img148.imageshack.us/img148/4352/shootyshootyrk9.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Shooty-shooty. UV map characters on the very long to-do list&lt;/i&gt;&lt;br&gt;&lt;br&gt;And finally the PC (with good old DOS), and future -- or rather the present -- was here. My first PC had a 25mhz processor and whopping 4megs of RAM - my current has a dual 2.3ghz chips with 2gigs of RAM. And the games are more visually realistic than ever. Call of Duty 4 has 2 million shades of grey whilst Gears of War 2 promises to break new boundaries in the shade of brown. HDR lighting means every glance to a virtual sky burns out the player's retina as the screen fills with the burning brilliance of a supernova - which is odd, 'cos I look up at the sky all the time and it doesn't seem to damage my sight. Nor do I see lense flare from every angle.&lt;br&gt;&lt;br&gt;So what is the Indie Dev to do with this march of monotone progress?&lt;br&gt;&lt;br&gt;&lt;img src='http://img148.imageshack.us/img148/4346/nonormals1rx0.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Handpainted brick textures&lt;/i&gt;&lt;br&gt;&lt;br&gt;Well, the Indie Dev could play along with hyper-real world of grey and brown psuedo-photrealism. I've got a pretty decent digital camera, I know how to edit images and understand colour (I should do, I got a degree and post-grad and then spent X years bumming around the arse-end of the Mediteranean as a Bohemian artist type). &lt;br&gt;&lt;br&gt;And then get lost in the haze? I expect the brownness of GOW2 is costing the outstanding national debt of a small impoverished country - Hallo3 certainly did. Then there's the team numbers - which is pretty much the same thing as cost. One bloke in his bedroom, furiously hammering away at a graphics tablet and keyboard, is not a 100-300 strong development team spread across multiple studios (a la GTA4).&lt;br&gt;&lt;br&gt;&lt;img src='http://img148.imageshack.us/img148/412/normals1ug4.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Simplified normal map slapped over the top of the base&lt;/i&gt;&lt;br&gt;&lt;br&gt;So, back to that tablet and digital painting for textures, and tile and reduce detail in photos to make normal maps for brickwork and surfaces. My first attempts at striking a balance between artistic paint style (textures) and realism (normals) is pretty okay ..... ish. Though I might like them to be a tad rougher.&lt;br&gt;&lt;br&gt;After further practise/messing I worked out a technique to make a painted skybox by hand.&lt;br&gt;&lt;br&gt;&lt;img src='http://img148.imageshack.us/img148/8214/skyboxtry1ix0.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;It took a bit of trial-and-error to get rid of the seams&lt;/i&gt;&lt;br&gt;&lt;br&gt;Colour - and only 2 shades of brown!&lt;br&gt;&lt;img src='http://img141.imageshack.us/img141/8607/moorlandle6.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Sponsored by the North Yorkshire Moors Tourism Board!&lt;/i&gt;&lt;br&gt;&lt;br&gt;Right, next I reckon it's roads, trees and foliage needed to build the basis for a proper environment.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/101767/14898">
		<dc:format>text/html</dc:format>
		<dc:date>2008-06-17T15:09:10+00:00</dc:date>
		<dc:creator>Steve YorkshireRifles Acaster</dc:creator>
		<title>TGEA upgrade</title>
		<link>http://www.garagegames.com/blogs/101767/14898</link>
		<description>Couldn't resist any more and went hunting through my sock drawer for my credit card.&lt;br&gt;&lt;br&gt;Been playing around with TGEA, and slowly beginning to port over my squad based FPS demo (might take a while, I'm a scripter not a coder) - whilst playing around with all of the &lt;i&gt;fancy stuff&lt;/i&gt;.&lt;br&gt;&lt;br&gt;&lt;img src='http://img240.imageshack.us/img240/8726/dx9test1cu5.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;Normal map overkill.&lt;br&gt;&lt;br&gt;&lt;img src='http://img73.imageshack.us/img73/377/incomingbg0.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;Now that's what I call tracer!&lt;br&gt;&lt;br&gt;Been testing different ways of building ... er ... buildings, and other general level design stuff to work out what gives the best performance.&lt;br&gt;&lt;br&gt;The new map2dif_plus_tgea really helps boost the frame rate of multiple difs.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/101767/14681">
		<dc:format>text/html</dc:format>
		<dc:date>2008-05-02T03:50:17+00:00</dc:date>
		<dc:creator>Steve YorkshireRifles Acaster</dc:creator>
		<title>Squad Based Movement Explained</title>
		<link>http://www.garagegames.com/blogs/101767/14681</link>
		<description>As a few people have asked for an explanation of how the squad based AI from my demo works, this is a simplistic overview of the concept. I'm keeping it as simple as possible, in the hope that the most people will understand the concept and be able to modify it to suit their own needs and gameplay style. A lot of my scripts are very much project specific and won't work &amp;quot;out of the box&amp;quot; with other peoples' AI scripts.&lt;br&gt;&lt;br&gt;The whole basis is for a team of friendly AI to move with the player, as occurs in various FPS games such as Call of Duty, Medal of Honor, Quake4, Rainbow6, etc, etc. This is done by dividing the areas that the player can move through with triggers which will - when entered by the player - give the friendly AI an order to move to a new position. If you have a level which is a linear progression (like the snaking maze in my demo) triggers are fairly easy to layout. The player can go forwards or backwards through the maze (think of this as moving along the X axis of a level). However if you have a large, open level that allows a lot of freedom of player movement, you'll need many more triggers (X and Y axis). I used some 15 different movement triggers in my short, linear demo level.&lt;br&gt;&lt;br&gt;Positions or goals for the friendly AI to move to are best defined by the location of an object of some kind - that way you call the &lt;i&gt;GetLocation&lt;/i&gt; function (or GetTransform) of the object rather than having to work out the XYZ position. I used stock Waypoint Markers.&lt;br&gt;&lt;br&gt;Now all of this moving back and forth with goals, triggers and AIs can get a little complicated, so I found that it was useful to come up with a system of naming objects which made instant sense to me. For example: &lt;i&gt;Trig1&lt;/i&gt; caused &lt;i&gt;AiPlayer1&lt;/i&gt; to move to &lt;i&gt;WayPointA1&lt;/i&gt; and &lt;i&gt;AiPlayer2&lt;/i&gt; to move to &lt;i&gt;WayPointB1&lt;/i&gt;. So &lt;i&gt;AiPlayer1&lt;/i&gt; uses all the &lt;i&gt;WayPointA#&lt;/i&gt; and &lt;i&gt;AiPlayer2&lt;/i&gt; uses all the &lt;i&gt;WayPointB#&lt;/i&gt; goals. The identifying number (#) of the goals increase with the number of the triggers, so &lt;i&gt;Trig4&lt;/i&gt; leads to &lt;i&gt;WaypointA4&lt;/i&gt; and &lt;i&gt;WayPointB4&lt;/i&gt;.&lt;br&gt;&lt;br&gt;&lt;img src='http://img509.imageshack.us/img509/6084/squadmovement1qk1.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;In the end, the actual movement order boils down to the &lt;i&gt;Setmovedestination&lt;/i&gt; function. This is of course only good for straight lines, if you want your AI to avoid obstacles you'll need to integrate a pathfinding resource. There are a number of good pathfinding resources avaible from the GG site or you could write your own if know how. I don't understand the technicalities of C++, so I used Gabriel Notman's&lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14495'&gt; here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;There are a lot of tests that could be run when an AI receives a movement order from a trigger:&lt;br&gt;What is the distance to the goal?&lt;br&gt;Is the AI close enough to be already there?&lt;br&gt;Is there a clear LOS or will pathfinding be needed to avoid obstacles?&lt;br&gt;Is there any other factor which may override the trigger to move? (like a man-eating beastie at the goal and the AiPlayer is unarmed - not a good idea to go charging in)&lt;br&gt;Is the AiPlayer actually alive?&lt;br&gt;&lt;br&gt;------------------------&lt;br&gt;Brief Walk Through&lt;br&gt;------------------------&lt;br&gt;&lt;br&gt;The player enters &lt;i&gt;Trig1&lt;/i&gt;, which sends an order for &lt;i&gt;Ai1&lt;/i&gt; to move to goal &lt;i&gt;A1&lt;/i&gt; and for &lt;i&gt;Ai2&lt;/i&gt; to move to goal &lt;i&gt;B1&lt;/i&gt;. First check that only the player is activating this trigger, if you allow any and every AI to fire triggers they'll be a lot of conflicting orders. Using the &lt;i&gt;getClassName&lt;/i&gt; is a good way of doing this.&lt;br&gt;&lt;br&gt;Then check that the AiPlayers actually exist and give them orders using the &lt;i&gt;isObject&lt;/i&gt; function. If the AiPlayers do not exist (isObject returns false because it can't find an object of that name) you might want to spawn them now.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='codeblock'&gt;&lt;pre&gt;function trig1::onTickTrigger(%this,%trigger)&lt;br&gt;{&lt;br&gt;&lt;br&gt;   Parent::onTickTrigger(%this,%trigger);&lt;br&gt;&lt;br&gt;        for(%x=0; %x &amp;lt; %trigger.getNumObjects(); %x++)  &lt;br&gt;        {&lt;br&gt;            %obj = %trigger.getObject(%x);  &lt;br&gt;&lt;br&gt;		%checkclass = %obj.getclassname();&lt;br&gt;		if(%checkclass $= &amp;quot;player&amp;quot;)&lt;br&gt;		{&lt;br&gt;            &lt;br&gt;			if(isObject(AI1))&lt;br&gt;			{&lt;br&gt;			Ai1.setmovedestination(A1.getposition());&lt;br&gt;			//or pathfinding function if you have it integrated&lt;br&gt;			}&lt;br&gt;			else&lt;br&gt;			{&lt;br&gt;			//Script a spawn function&lt;br&gt;			}&lt;br&gt;&lt;br&gt;//===========================&lt;br&gt;&lt;br&gt;			if(isObject(AI2))&lt;br&gt;			{&lt;br&gt;			Ai2.setmovedestination(B1.getposition());&lt;br&gt;			//or pathfinding function if you have it integrated&lt;br&gt;			}&lt;br&gt;			else&lt;br&gt;			{&lt;br&gt;			//Script a spawn function&lt;br&gt;			}&lt;br&gt;		}&lt;br&gt;	}&lt;br&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;And that, is the basis of it.&lt;br&gt;Each trigger has it's own orders for the AiPlayers, following the above example. The player enters &lt;i&gt;Trig2&lt;/i&gt;, which sends an order for &lt;i&gt;Ai1&lt;/i&gt; to move to goal &lt;i&gt;A2&lt;/i&gt; and for &lt;i&gt;Ai2&lt;/i&gt; to move to goal &lt;i&gt;B2&lt;/i&gt;.&lt;br&gt;&lt;br&gt;If you are using this style of triggered goals for AiPlayer movement and are making a squad based FPS, it will help to put the WayPoint Markers (or whatever you are using for the goals' locations) in places which you'd expect someone to move to in a battle. Place them near bushes, besides walls, or near objects which provide cover. That way when the player activates the movement triggers the AI will run from cover-to-cover, not simply keep standing out in the open presenting an obvious target.&lt;br&gt;&lt;br&gt;Another good tactic for placing goals and triggers, is to set some of the AI's goals slightly inside the next trigger. That way the AI will be ahead of the player and it won't look as though the player is constantly leading the charge or that the AI is just following in the player's footsteps all the time. This all helps to give the AI the feeling of being a lot more intelligent than they actually are.&lt;br&gt;&lt;br&gt;I hope the concept I tried to explain here is clear (cos I did manage to lose myself halfway through!).&lt;br&gt;&lt;br&gt;To recap:&lt;br&gt;1. Player moves into trigger.&lt;br&gt;2. Trigger tells AI which goal to move to.&lt;br&gt;3. Loop 1.&lt;br&gt;_____&lt;br&gt;Steve.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/101767/14653">
		<dc:format>text/html</dc:format>
		<dc:date>2008-04-26T14:59:23+00:00</dc:date>
		<dc:creator>Steve YorkshireRifles Acaster</dc:creator>
		<title>Dubious Demo Released</title>
		<link>http://www.garagegames.com/blogs/101767/14653</link>
		<description>To quote the TGE docs&lt;br&gt;&lt;blockquote&gt;&lt;font size=1&gt;Quote:&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;br&gt;Step 4) Build a quick and dirty prototype:&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Well, it's quick, it's dirty, it's certainly &lt;i&gt;dubious&lt;/i&gt;.&lt;br&gt;&lt;br&gt;&lt;img src='http://img74.imageshack.us/img74/2820/demo3gp6.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;But it is a working demonstration of core gameplay, or at least the AI combat aspect of it.&lt;br&gt;&lt;br&gt;The demo objective is quite simple; it's a fairly straight forward FPS, the player has 5 allies, bad guys dress in red, get to the end of the level. There is no save game system so if you get shot to bits you have to start again. It's not very long, but should entertain for a 5-10 minutes.&lt;br&gt;&lt;br&gt;&lt;img src='http://img74.imageshack.us/img74/624/demo2zw0.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;Resources I've used are:&lt;br&gt;&lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14495'&gt;Pathfinding by Gabriel Notman&lt;/a&gt;&lt;br&gt;&lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=1714'&gt;Projectile Spread by Daniel Neilsen&lt;/a&gt;&lt;br&gt;&lt;a href='http://www.garagegames.com/mg/forums/result.thread.php?qt=70120'&gt;Sights Offset by Tim Heldna&lt;/a&gt;. (About half way down this forum post)&lt;br&gt;&lt;br&gt;Those, and loads of general info I picked up from the GarageGames community by reading the forums.&lt;br&gt;&lt;br&gt;&lt;img src='http://img113.imageshack.us/img113/9033/demo1no1.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;The AI/Player models and animations were my first attempts in Blender (which is a really nice program once you get past the unfamiliar interface). They have no textures, just colour blocks denoting where textures will eventually go. The player itself has no fancy animations, just an offset gun on screen. Gunshot sounds I made with Audacity. The GUIs are just the TGE demos' slightly customized, last week being my first attempts at messing around with such things. Everything else is pretty much stock TGE demo stuff being used as placeholders (trees, terrain textures, ambinet sound, etc).&lt;br&gt;&lt;br&gt;My actual &lt;i&gt;MasterPlan&lt;/i&gt; (cue diabolical laughter) is for a more cerebral First Person Action-Adventure (this demo is really just a super-basic FPS - no brain power required), but I always figured that the most difficult aspects of sitting in my bedroom and developing a game would be the AI - the stuff which the player has to interact with, both friendly and downright hostile. So that's what I've tackled first.&lt;br&gt;&lt;br&gt;So here it is, quick and dirty in the extreme it's the &lt;b&gt;Dubious Demo v.02&lt;/b&gt; AI combat gameplay test.&lt;br&gt;&lt;br&gt;&lt;a href='http://files.filefront.com/YorkshireRifles+Demo1zip/;10080513;/fileinfo.html' target=_blank&gt;15Mbs Download&lt;/a&gt; from FileFront (the easiest place I could think to host it as I haven't sorted a website out yet.)&lt;br&gt;&lt;br&gt;Read the ReadMe - it's what it's for.&lt;br&gt;&lt;br&gt;---------------------------------&lt;br&gt;&lt;br&gt;&lt;a href='http://youtube.com/watch?v=LD0HhoH8f4o' target=_blank&gt;YouTube Video of the Demo Gameplay&lt;/a&gt;</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/101767/14545">
		<dc:format>text/html</dc:format>
		<dc:date>2008-04-03T01:46:28+00:00</dc:date>
		<dc:creator>Steve YorkshireRifles Acaster</dc:creator>
		<title>Cooking AI on Gas</title>
		<link>http://www.garagegames.com/blogs/101767/14545</link>
		<description>After much hammering away at my AI, things have been coming along nicely.&lt;br&gt;&lt;br&gt;Initially I implementing the coded Djikstra pathfinding by &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=6051'&gt;Robert Brower&lt;/a&gt;, which was a great way of learning to understand what pathfinding required.&lt;br&gt;&lt;br&gt;After that I moved on to something more complex, enabling &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=13326'&gt;Gabriel Notman's&lt;/a&gt; C++ pathfinding resource (new zip available I see) for &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=6889'&gt;Mark Holcomb's&lt;/a&gt; CTF resrouce. Gabriel was nice enough to send me his scripts so I could have a good look through a working example - very useful as I'm not a programmer, but I can script a bit.&lt;br&gt;&lt;br&gt;Initially I tried to mod my now built CTF resource to fit my AI routines, but in the end found it easier to start from the ground up with Gabriel's pathfinding C++ files and Mark's array C++ file, and eventually I got my custom goal-by-trigger based AI working with these resources. So that really sorted my pathfinding problems out.&lt;br&gt;&lt;br&gt;&lt;a href='http://youtube.com/watch?v=7U2lyM7NdQU' target=_blank&gt;Video, my AI using Gabriel's pathfinding, running around Mark's CTF map.&lt;/a&gt; And me changing the AI's goals dynamically with the console.&lt;br&gt;&lt;br&gt;After that was sorted out, I worked on fixing my AI's combat-think, team, targeting system. I'd been using a heavily modded version of the famous Killer Kork by &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=10278'&gt;Devans&lt;/a&gt;. This had been a great script for reading through and learning how AI work. Using my hugely cutdown version I found that it could get a bit laggy with 32 AI on the go - and had a noticeable jolt ever thinktick() if I spawned all 32 in one go. I reckoned this was because each Killer Kork AI had it's own Vislist, which it updated every thinktick(), so that's 32 extra lists duplicating 31 other AI, getting updated every tick.&lt;br&gt;&lt;br&gt;Going back to Mark's CTFbot resource I made a MasterArrayList which each AI joins when they spawn (and so does the player 'cos I'm only interested in SinglePlayer gaming). Every think(), working side-by-side with the pathfinding, they check for non-team members within their dynamically set %range. Finding the nearest with a decent LOS they attempt to shoot them.&lt;br&gt;&lt;br&gt;Even with a LOS check for friendlies, there is the occaisonal blunder of friendly-fire, so I knocked up a bit of hacky code for projectiles to ignore damage on teammates.&lt;br&gt;&lt;br&gt;After much fiddling and testing and tweaking, I'm pretty pleased with it. 32 AI running around, shooting the hell out of each other with shotguns, smgs and rifles - and no lag.&lt;br&gt;&lt;br&gt;Last versions AI causing an almighty conflagration of dodgy LODed models and animations.&lt;br&gt;&lt;img src='http://uk.geocities.com/eastyorksrifles/hillbillies.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;I tweaked my triggerable spawn system to get rid of the remain $globals in my AI script, so everything important can be changed on the fly with scripts and triggers.&lt;br&gt;&lt;br&gt;&lt;div class='codeblock'&gt;&lt;pre&gt;dospawn(%name, %aitype, %team, %spawnPoint, %startup, %sight_range, %weapon, %goal)&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;That's pretty much done for my basic AI, I need to come up with an OnStuck() or dynamic avoidance of teammates function for when they occaissonally bump into each other and get jammed. And I need to come up with a OnDeath() &amp;quot;spawn ammunition of the type of weapon it was carrying&amp;quot; for the player to pickup.&lt;br&gt;&lt;br&gt;After that I want to knock up a dedicated hunter AI to run down enemies for melee type attacks, and then start getting some functionality for the player sorted out.&lt;br&gt;&lt;br&gt;So, I've been busy, and I've been productive. And I still managed to get time to go to an Ale Festival last week!&lt;br&gt;&lt;br&gt;Steve Acaster - &lt;a href='http://yorkshirerifles.blogspot.com/' target=_blank&gt;yorkshirerifles.blogspot.com/&lt;/a&gt;</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/101767/14435">
		<dc:format>text/html</dc:format>
		<dc:date>2008-03-13T02:58:01+00:00</dc:date>
		<dc:creator>Steve YorkshireRifles Acaster</dc:creator>
		<title>First Blog: Intro, Plan and Progress</title>
		<link>http://www.garagegames.com/blogs/101767/14435</link>
		<description>&lt;b&gt;Intro - the quick bit about me:&lt;/b&gt;&lt;br&gt;I've spent most of the last few years creating Single Player campaigns for the Call of Duty series - designing, building and scripting multi-level mods, teaching myself how to scripting and build levels as I went along. I've amassed 21,000+ downloads of my work on Filefront, working under the name &lt;b&gt;Yorkshire Rifles&lt;/b&gt;.(originally chosen as a pun on the song &lt;i&gt;Eton Rifles&lt;/i&gt; by &lt;i&gt;The Jam&lt;/i&gt;)&lt;br&gt;&lt;br&gt;&lt;a href='http://callofduty.filefront.com/developer/YorkshireRifles;15884' target=_blank&gt;Overview of my Call of Duty1/2 single player campaigns&lt;/a&gt;&lt;br&gt;&lt;a href='http://uk.geocities.com/beyondrostov/' target=_blank&gt;My Soviet Campaign with lot's of screenshots&lt;/a&gt;&lt;br&gt;&lt;br&gt;And I've always been pretty pleased with my progress. I've had some job interview with a few developers on the basis of them, but never got gainful employment. Oddly the only companies who have expressed an interest in me have been based in the US or Canada. I'm a Brit in the UK, and British based companies don't even waste their times telling me where to stick my applications. Hence I don't bother sending out job applications anymore (especially in the UK).&lt;br&gt;&lt;br&gt;I've been &amp;quot;into&amp;quot; computers since the early '80s when I got a ZX Spectrum, when I learnt how to make my own text adventures in BASIC. I've no actual qualifications in computing, just self taught over the years. I've a BA with Honours and a PGD in Fine Art and spent 5 years being a &lt;i&gt;bohemian-artist-type&lt;/i&gt; out on a Mediterranean island. I'm fairly useful with a brush and oil paint - or a tablet.&lt;br&gt;&lt;br&gt;&lt;b&gt;The game Plan&lt;/b&gt;&lt;br&gt;I'm making a First-Person Action/Adventure (not a straight shooter) which will be Single Player only, spread over 15-25 levels. The setting will be contemporary/near future with a strong element of sci-fi. I intend to utilize my painting technique to produce a very individual art design. I'm designing a trigger based goal and AI system, something not too different from my background in modding CoD.&lt;br&gt;&lt;br&gt;I'm starting with TGE, on the basis that it will provide the easiest learning environment, though could well move on to TGEA when I have a basic working framework. &lt;i&gt;But let's not get ahead of ourselves.....&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Progress&lt;/b&gt;&lt;br&gt;I've actually been planning my little project for some time, and have been lurking around the GarageGames forums for months before I eventually joined, familiarizing myself with TorqueScript from the public areas and resources.&lt;br&gt;At the same time I started to learn all the bits of games creation that I've never tried before - like modelling, and animating. I've been using Blender ('cos it's free!) and have built some basic-but-functioning character models built from the ground up with custom animations (no Kork or related parts for me) and LODs. They're not the prettiest things the world has ever seen but they're fine for a quick and dirty demo.&lt;br&gt;&lt;br&gt;I heavily cannabilized the Killer Kork resource for a team based battle test. There's a &lt;a href='http://youtube.com/watch?v=oFz1ApPhu-8' target=_blank&gt;low quality video&lt;/a&gt; of red-vs-blue teams (using shotguns with an accuracy matrix resource).&lt;br&gt;&lt;br&gt;I consider the AI to be the hardest part of my project at the moment and want to get a functioning AI system complete before doing anything. (no point building huge, beautiful levels only to find out you can't make anything work in them)&lt;br&gt;Whilst I'm quite happy with the modded Killer Kork resource I think I've learned enough to try and build my own AI targeting/combat system from scratch.&lt;br&gt;&lt;br&gt;I've since scripted my own trigger/condition based spawn system which fulfills many of my original aims for it and have dispensed with AIManagers (it's nice when things work first time). &lt;br&gt;&lt;br&gt;At the moment I'm trying to implement my first go at pathfinding. Having had a look at various node graph solutions such as the ImmersiveAI, I don't think I need anything that indepth, and prefer to manually place waypoints (which is kinda what you get when modding Q3 based engines like Call of Duty). &lt;br&gt;I implemented a scripted Dijkstra resource and then modded it so it was a little more useful and the Ai would skip/break off the path at the first opportunity - intergrating that into my trigger based goal system.&lt;br&gt;&lt;br&gt;&lt;a href='http://youtube.com/watch?v=GXLPsvYiNBw' target=_blank&gt;Dijkstra Test video&lt;/a&gt; &lt;br&gt;(there's a download link for a better res on my &lt;a href='http://yorkshirerifles.blogspot.com/' target=_blank&gt; blogspot &lt;/a&gt; which you can read the console clearly from)&lt;br&gt;&lt;br&gt;So, that's about it so far, I think I might attempt to merge my AI teams/targeting and pathfinding resources first to make sure that they work as I expect, and then I can get rebuilding/improving my entirely own versions later. The primary aim is get a working gameplay demo up and running, however dirty and uneven it may be, it will provide a foundation to build upon and expand from.&lt;br&gt;&lt;br&gt;Steve Acaster - &lt;a href='http://yorkshirerifles.blogspot.com/' target=_blank&gt;yorkshirerifles.blogspot.com/&lt;/a&gt;</description>
	</item>
</rdf:RDF>
