<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5957314916148127865</id><updated>2011-10-01T17:21:15.518+01:00</updated><title type='text'>Pixel's Development Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-6414751623781807849</id><published>2011-08-03T10:04:00.005+01:00</published><updated>2011-08-03T10:29:21.235+01:00</updated><title type='text'>Work on my game projects currently suspended</title><content type='html'>Having discovered the product EKI One from Artificial Technology in Germany I have currently suspended all my game development in order work on integrating this product with Leadwerks Engine 2.&lt;br /&gt;&lt;br /&gt;EKI One is an AI Toolset comprising path finding (uses Recast), steering mechanisms for dynamic avoidance and FSM based tools for defining scripted behavior for both NPCs and non character based applications.  Although I had made considerable inroads into providing my own path finding solution combined with a working FSM system and was having success with this I always considered Nav Mesh based solutions superior to my own hierarchical grid based system and I have only basic FSM support and no steering system either.&lt;br /&gt;&lt;br /&gt;Whilst it's nice to develop these systems yourself, it takes a lot of time and research and having looked at what EKI One offers I was blown away as it would take me years to develop a comparable system with nice toolsets and then it would probably not be anywhere near as well designed as theirs!&lt;br /&gt;&lt;br /&gt;That said it was a simple decision to abandon ongoing work on my existing projects in favor of integrating their system with Leadwerks. &lt;br /&gt;&lt;br /&gt;Progress has been steady so far.  I have practically completed the initial phase which was to write a Leadwerks to EKI One exporter to get the Leadwerks geometry into their Configurator/Sandbox so that nav meshes can be generated allowing AI design to be carried out in their application.&lt;br /&gt;&lt;br /&gt;The second phase is to integrate their engine into a Leadwerks framework so the exported AI solution can be used in our Leadwerks projects.  This work is ongoing.&lt;br /&gt;&lt;br /&gt;Below is a demo video of my Stranded Test Level in Leadwerks imported into EKI One and a simple random movement agent in action:&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/v/_2YyL9Nojr0?version=3" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-6414751623781807849?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/6414751623781807849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/08/work-on-my-game-projects-currently.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/6414751623781807849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/6414751623781807849'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/08/work-on-my-game-projects-currently.html' title='Work on my game projects currently suspended'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-7905216359071580933</id><published>2011-05-29T16:44:00.004+01:00</published><updated>2011-05-29T17:29:07.838+01:00</updated><title type='text'>Integration and consolidation</title><content type='html'>It’s been a while since I've posted.   The main reason for this being the fact that I got side tracked by virtue of a 'Make A Game In A Month' competition into having a go at making an Adventure type game.  The intension was to use what I had and add additional functionality to enable the engine to handle Adventure/RPG style games and produce a small level example.  &lt;br /&gt; &lt;br /&gt;As it turns out I bit off far more than I could chew and, to cut a long story short, never managed to complete the project inside a month.  That said I did manage to produce a complete working inventory system along with a 2D graphics manager so I could pick items from the game world and display them in a skinable inventory box and also display info on them and display other items such as Journal pages/maps etc.  All of these used my input manager allowing external keyboard/mouse button assignments to be attached to them.  The 2D Graphics manager also should with some additional coding be able to handle skinable menu systems quite easily.&lt;br /&gt; &lt;br /&gt;I really enjoyed doing this and also designing a small test level set in medieval times and experimenting with other level items like waterfalls and flowing water.&lt;br /&gt; &lt;br /&gt;Suffice to say, I have decided to fully integrate the new features into my game engine in such a way that it is switchable between FPS and Adventure/RPG genres and will inherently support both.&lt;br /&gt; &lt;br /&gt;The first stage in this has been to bring my engine Editor up to the latest version of Leadwerks which has introduced a few issues.  Some were directly associated with changes Josh had made to the engine since version 2.31 which was the version I was previously working with.  Most of these have now been resolved (the change to previously filtered pick items in 2.32 being the one that had me scratching my head initially as I use a lot of picking and it just broke a lot of my functionality).  The other main change/update involved leaving framewerk behind and switching to the encapsulated framework.  The main reason for this was the need to gain some of the later features such as the contrast/saturation etc setting support and the ability to use the existing LUA scripts and objects.  The conversion is now complete all be it with some outstanding issues with refraction and some transparency issues with muzzle flash animations.&lt;br /&gt; &lt;br /&gt;The second stage will be to add much better support for external definition of animated NPCs and the loading of such data and an expansion of my existing NPC/AI framework to make it easier to support multiple NPCs with their own individual AI.  &lt;br /&gt; &lt;br /&gt;The third stage will be to integrate and consolidate the Adventure/RPG functionality from my Kingdom Of Soul game code and the changes to my engine in the Editor such that both will support the full code features.&lt;br /&gt; &lt;br /&gt;Following the successful completion of this I will be working initially on expanding the NPC and AI support for the Adventure game and expanding on the test level to accommodate it.&lt;br /&gt;&lt;br /&gt;NOTE: Stranded has not been abandoned, the changes to the animation and AI support will benefit Stranded too and after I have completed a small playable level of the Adventure game I will return to Stranded.&lt;br /&gt;&lt;br /&gt;Demo of the inventory system:&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/1R7KAEvftAM" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Demo of animation and pathfinding:&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/X-9MNYEBYNE" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Demo of animated waterfall:&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/kH5Ufb0jv2g" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-7905216359071580933?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/7905216359071580933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/05/integration-and-consolidation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7905216359071580933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7905216359071580933'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/05/integration-and-consolidation.html' title='Integration and consolidation'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/1R7KAEvftAM/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-435441499466230906</id><published>2011-03-10T22:50:00.004Z</published><updated>2011-03-10T23:00:17.171Z</updated><title type='text'>Improved AI and Finite State Machine Tracking</title><content type='html'>Work continues with the AI and in order to facilitate FSM design I've today updated the Editor to add support for getting real time feedback on screen of the NPCs Alert States and current FSM states.  Select the State Feedback Option on the NPC tab and click on the NPC you want to track and State information will be displayed in real time.  This combined with the ability to slow the animation rate right down allows useful feedback of how the FSM is behaving for any given NPC and in game situation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-435441499466230906?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/435441499466230906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/03/improved-ai-and-finite-state-machine.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/435441499466230906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/435441499466230906'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/03/improved-ai-and-finite-state-machine.html' title='Improved AI and Finite State Machine Tracking'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-9213202845695044859</id><published>2011-02-22T14:02:00.009Z</published><updated>2011-02-22T15:15:23.392Z</updated><title type='text'>Animation Overview</title><content type='html'>&lt;p&gt;It’s been suggested that I might give a bit more insight into my approach to NPC animation handling within my engine which I'm happy to do.&lt;br /&gt;&lt;br /&gt;As a result of my inexperience of game engine design I probably have a rather simplistic view still on animation and the control of it within modern game engines. It strikes me however that there are two prominent approaches to this as follows:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Throw as many professional animators at the job as you can producing as much animated output as possible for as many in game scenarios as you can with sufficient animation support in the engine to enable this. The pros to this is you can have animators tailor the animation to fit your game precisely providing high quality animation for all scenarios. The downside of this is the requirement for large teams of animators and a huge size of animation to be handled and the probable complexity of scripting all this.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Design or use a third party locomotion system designed to take a few basic animations attached to characters and through the use of sophisticated forward placement detection, IK and animation blending produce all other animations from these basic sets. The advantages are you get a lot more animation from a fairly simple input set (which is great if you are buying inexpensive 'off the shelf' characters where you don't have access to the animator to tweak or amend animations as required.&lt;br /&gt;Also you gain realistic foot placement and interaction with your game environment, so proper foot placement on steps and slopes. No more 'feet in the air' when walking down slopes for instance! The downside is the fact that these are fairly complex to design and are only now becoming prominent even in the AAA game design studios. Also, non I have seen are perfect and on occasions you can see odd animation or mistakes.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;For most Indie developers, the first option is probably still the most widely used so be it with only a small team or even a single animator. With careful level design a lot of the issues can be minimized and the amount of separate animations required reduced (for instance, keep all your step heights the same). Being able to tweak or amend the animations during the&lt;br /&gt;test phase is a huge advantage in providing a final polished look to the animation.&lt;br /&gt;&lt;br /&gt;Rune's locomotion system in Unity is a classic example of the second approach and if you’re lucky enough to have access to this level of procedural animation support then it’s very tempting to use it.&lt;br /&gt;&lt;br /&gt;From my point of view, concerning my engine design and the use and control of animation within it, I hadn’t deployed anything more sophisticated than the ability to load characters and their animations and use the simple animate function in the Leadwerks API to control movement until recently. I guess I was eager to get on to the design of AI and get some real interaction and game play going.&lt;br /&gt;&lt;br /&gt;However, once I had some reasonable AI in place and started testing it, my simplistic animation support was evident ... it didn't look very good! &lt;/p&gt;&lt;p&gt;As I am a programmer, I have only a rudimentary understanding of character rigging and animation.  I'm working with an animated skeleton that provides most of the basic animations I need. I don't have access to a skilled animator at this stage in my project; so my decisions and thought train regarding solutions are obviously coloured by this and reflected in some of the decisions that I've subsequently taken.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;THE PROBLEMS&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The main problems broke down into the following areas:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;I had no coded animation blending support, so although all the support was there to have NPCs walk or run along routes determined by my path finding functionality they didn't start and stop smoothly.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;No curving through direction changes on paths, this stood out like a sore thumb and obviously looked very un-natural.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Foot skating issues from time to time. Fairly easy to sort out with just a fixed speed for each character when running or walking. But how would you determine this when blending animations, say an idle to a run, where the animation will actually accelerate in the initial blended stage.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Poor character behavior when climbing steps, with having the character mesh parented to the character controller at this point the instant climb in step height was replicated in the character making its movement look very un-natural yet again.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The obvious need to provide some animation support that was inherently just missing, such as the need to aim a characters gun at an enemy that may well be at a different height. Also the need to add some head turning animation to characters in general to simulate them looking around as they move, especially in states of heightened Alert!  Also some general gesticulation movement to simulate NPCs communicating with each other. As the first issue is a variable with no fixed animation able to address this it seemed procedural animation would be a good candidate for this and would also provide a solution of the other issues. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The classic feet in the air issue when walking down slopes (as seen is so many games of the past and even today - Dragon Age being the most recent one I recollect seeing it in).&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;&lt;p&gt;THE SOLUTIONS&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Redesign my basic animation support routines.&lt;br /&gt;&lt;br /&gt;This involves creating a queued method of adding animations where animations along with some controlling flags, values etc could be simply added to a queue and then popped off and processed. Example flags or values would be 'now' or 'wait' (replace current animation immediately or wait till end of current animation), 'blend value' (the amount of blending to be applied), 'blend speed' etc. All of these values have default values that can be set against the animation concerned but can be overridden by values passed at run time onto the queue (predominately by the AI scripts). Special cases were introduced for animations such as right angle turns where the next to be blended animation would been to be rotated through 90 degrees and blended with the final frame of the turn. Again, this could be defined against the particular animation details for implementation by the animation engine. The character mesh is no longer parented to the controller allowing for independent control of each if need be.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Redesign my path movement control logic to include a rate of turn to be applied to directional changes resulting in a natural looking curve of the NPC's motion. Also work was required to incorporate blended stops to ensure they didn't over-run the end path location and final alignment of NPC was correct especially if a recent turn had been implemented.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Make the movement driven by the animation itself.&lt;br /&gt;&lt;br /&gt;In order to get rid of foot skating once and for all and get round the issue of varying speed during animation blending a decision was made to analyze the animation movement ahead of the main animate call and deduce the exact movement required to always match the animation. I used the right and left toe bones for this and its given good results. Now the speed is always matched precisely to the animation even during blending which ensures perfectly synchronized motion and no foot skating under any circumstance. Motion is now directly controlled by animation speed and blending. There are some animations where automatic animation driven motion may not be required so there is a flag for disabling this against any given animation or overriding a default value at real time.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Allow independent control of the mesh height movement&lt;br /&gt;&lt;br /&gt;The mesh, now decoupled from its character controller has its height moved at a defined rate when encountering changes in height of the controller over a threshold limit . This allows a more natural step climb feel to the NPC whether going up or down steps.&lt;br /&gt;&lt;br /&gt;I also reduce the animation speed under these circumstances (also works on slopes) to reflect a more natural change of pace.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;As yet to be programmed.&lt;br /&gt;&lt;br /&gt;Procedural animation and blending is what I'm currently working on.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Yet to look at this.&lt;br /&gt;&lt;br /&gt;Without an inverse kinematics solver and some trail and error I'm not sure this is possible but I'd like to get back to this at some point in the future to see if I can find a reasonable solution.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I hope this has at least been informative and welcome any open discussion of issues and techniques as this is all completely new to me. I have simply implemented solutions that occurred to me and appear to work reasonably well.&lt;br /&gt;&lt;br /&gt;I'll post another video soon once I have the procedural animation and blending up and running and a little more AI in place.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-9213202845695044859?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/9213202845695044859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/02/animation-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/9213202845695044859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/9213202845695044859'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/02/animation-overview.html' title='Animation Overview'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-5369391539929057928</id><published>2011-02-15T10:15:00.003Z</published><updated>2011-02-15T11:22:02.138Z</updated><title type='text'>It's never that easy is it!</title><content type='html'>Further testing of the new animation routines now it’s embedded in the editor and using path finding revealed some more subtle issues, especially where blending was used at the end of path finding.  There was a tendency to overshoot the destination point and also issues with the final orientation due to adjusting the orientation dynamically based on the target position.&lt;br /&gt;&lt;br /&gt;All of this has now been resolved and is working well and looking very natural, so be it with a load more complexity behind the scenes. &lt;br /&gt;&lt;br /&gt;Like most areas I've coded for in this little adventure in game engine design there always seems to be unexpected and unforeseen issues which extend the time taken to complete any particular aspect.  But again it’s a valuable learning curve and the end results do justify the effort put in, which keeps me motivated.&lt;br /&gt;&lt;br /&gt;Procedural animation next on the list which I'm hoping to start on tonight as I'm desperate to get back to the AI design with the improved animation support in place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-5369391539929057928?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/5369391539929057928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/02/its-never-that-easy-is-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5369391539929057928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5369391539929057928'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/02/its-never-that-easy-is-it.html' title='It&apos;s never that easy is it!'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-2606999055621450710</id><published>2011-02-05T21:52:00.004Z</published><updated>2011-02-05T22:13:09.381Z</updated><title type='text'>New Animation Now Working in Editor</title><content type='html'>I've now successfully plugged the new animation support back into my editor and made a few improvements to the patrol code.  I set up a test patrol today with 20 NPCs following an extensive patrol route.  The animation looked great and really steady even when cycling my system performance up and down in real time, so well worth the time I've put into this.  Having the NPCs curve through direction changes has made it look so much more natural.  They automatically slow down slightly on gradients too and speed up again as it flattens out.&lt;br /&gt;&lt;br /&gt;Whilst I was making changes to my NPC class update routine I've noticed room for improvement on some of the control mechanisms and flags that I set up for use by the NPC class’s Finite State Machine.  I shall be making improvements to that before moving on to adding Procedural Animation support to supplement the skeletal animations.&lt;br /&gt;&lt;br /&gt;I currently have about 40 procedures which I'm calling when required from the FSM to provide the necessary AI support, including the ability to post delayed state transitions triggered by timers.  I expect this will grow some more too as I extend the AI capability.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-2606999055621450710?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/2606999055621450710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/02/new-animation-now-working-in-editor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/2606999055621450710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/2606999055621450710'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/02/new-animation-now-working-in-editor.html' title='New Animation Now Working in Editor'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-7753469004412178997</id><published>2011-01-23T22:47:00.003Z</published><updated>2011-01-23T23:12:55.791Z</updated><title type='text'>Farewell To Foot Skating</title><content type='html'>I've finally converted my animation routines to be animation driven to get around issues with foot skating which were cropping up from time to time.  So now the only speed that is ever set is the animation speed and any forward motion of the model is driven by the animation itself.  This is really effective with blended animations as the forward motion no longer has to be calculated independently but is now a direct function of the animation and as a result is always perfectly in sync. Controlling the movement of the model directly gives 100% perfect results. Using a character controller (as I am doing) results in a slightly looser control as you are not directly controlling the end position of a movement but effectively applying a force in a direction in order to get you there.  However, in practice it's proving to be effective enough with pretty much constant motion with no skating at differing animation speeds and frame rates.  I'm satisfied that this is working well enough now to plug it into my Game Engine/Editor.&lt;br /&gt;&lt;br /&gt;Next up is work on procedural animations to be blended in with existing skeletal animations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-7753469004412178997?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/7753469004412178997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/01/farewell-to-foot-skating.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7753469004412178997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7753469004412178997'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/01/farewell-to-foot-skating.html' title='Farewell To Foot Skating'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-4268605965374557541</id><published>2011-01-03T13:27:00.005Z</published><updated>2011-01-03T13:37:51.721Z</updated><title type='text'>Latest News</title><content type='html'>Things are developing gradually.  I now have cover point functionality in place and that seems to be working nicely.  The AI design is proving less of a challenge than I originally thought (at least at this point lol) but finding time is proving more challenging.  I am currently working on improving the Animation support I have.  Below is a short demo of the Crawler character (courtesy of Hau Nghiep Phan) in action:&lt;br /&gt;&lt;br /&gt;&lt;object width="384" height="308"&gt;&lt;param name="movie" value="http://www.youtube.com/v/d7d6NMWL0TQ?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/d7d6NMWL0TQ?fs=1&amp;amp;ap=%2526fmt%223D&amp;amp;ap=%2526fmt%3D22&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="384" height="308"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-4268605965374557541?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/4268605965374557541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/01/latest-news.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4268605965374557541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4268605965374557541'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2011/01/latest-news.html' title='Latest News'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-7496140068534172793</id><published>2010-10-07T16:13:00.006+01:00</published><updated>2010-10-07T17:08:13.098+01:00</updated><title type='text'>New Interface In Place</title><content type='html'>Having had some fun and games getting tabs and property pages up and running using the Win32 api I now have it implemented.  I think it provides a much better user interface for moving forwards with and lots of room for adding more functionality.  Below is a pic of the improved Editor interface when first loaded:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_KyiiDAhYqhs/TK3kWpPTjBI/AAAAAAAAABc/fN4P-EXNsCc/s1600/new+editor+interface.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 255px;" src="http://1.bp.blogspot.com/_KyiiDAhYqhs/TK3kWpPTjBI/AAAAAAAAABc/fN4P-EXNsCc/s400/new+editor+interface.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525323395531770898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm still in the process of pluging all the functionality back  into this interface but that should be completed shortly.  Then it's back onto AI development with NPC groups and cover points next on the agenda.&lt;br /&gt;&lt;br /&gt;You will probably notice that the name of the editor has changed to reflect the name I've given to my game engine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_KyiiDAhYqhs/TK3wQg6XW6I/AAAAAAAAABk/-cu3rWLCt2o/s1600/new+editor+2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 255px;" src="http://1.bp.blogspot.com/_KyiiDAhYqhs/TK3wQg6XW6I/AAAAAAAAABk/-cu3rWLCt2o/s400/new+editor+2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5525336484356774818" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-7496140068534172793?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/7496140068534172793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/10/new-interface-in-place.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7496140068534172793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7496140068534172793'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/10/new-interface-in-place.html' title='New Interface In Place'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_KyiiDAhYqhs/TK3kWpPTjBI/AAAAAAAAABc/fN4P-EXNsCc/s72-c/new+editor+interface.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-5119826674417832999</id><published>2010-09-01T17:56:00.002+01:00</published><updated>2010-09-01T18:19:50.954+01:00</updated><title type='text'>Moving ever onwards  ....</title><content type='html'>Up until now the navArea Editor interface has been fine but as the amount of functionality I'm building into my editor increases it becoming impossible to stick with the original interface.  So I'm currently looking at adding some tabs and property pages to make it less cluttered and more intuitive.&lt;br /&gt;&lt;br /&gt;I'm also currently going through a GLSL shader tutorial and documenting this along with how to interface between shaders and Leadwerks.  This is an area I have long needed to get into and have ignored up until now.  There is an underlying requirement for some shader writing of which I'm not going to reveal anything as yet.&lt;br /&gt;&lt;br /&gt;Meanwhile, I am also putting together the foundation of my cover point functions for NPCs as part of my AI drive.  I need this to be pretty good as I want my NPCs behaviour to be convincing and quite a lot is intended to revolve around their use of cover and ability to provide covering fire whilst others move.&lt;br /&gt;&lt;br /&gt;Following this my intension will be to look at a separate integration of LUA to enable me to expose my AI and Path Finding functionality to LUA to allow for game flow and AI to be completely scripted ensuring that the engine can be used by both myself and possibly others without having to delve into the underlying code.  This is a key part of my overall strategy to produce an engine that has all the functionality built in that the majority of users would want and people can simply supply assets, a level design file(s) and script the whole game flow and AI using feature rich underlying functions exposed to the scripting language.  The editor supplying whatever additional functionality is required to aid this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-5119826674417832999?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/5119826674417832999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/09/moving-ever-onwards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5119826674417832999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5119826674417832999'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/09/moving-ever-onwards.html' title='Moving ever onwards  ....'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-2537907811569392021</id><published>2010-07-25T00:59:00.001+01:00</published><updated>2010-07-25T01:01:34.571+01:00</updated><title type='text'>Latest tweaks to the navArea Editor Path Finding display</title><content type='html'>Just a quick update to say that I've now coded some additional path finding visual feedback into the Editor. The 'Test Pathfinding' function now not only displays the final calculated path in blue with an NPC walking it but also all of the grid tiles taken into consideration whilst running the A Star algorithm and displays those in red along with the elapsed time in thousandths of a millisecond using a high precision timer. It will even sequence through these in slow motion (one every 1/4 of a second) so you can see the exact sequence of checks as they occurred when the algorithm was run.&lt;br /&gt;&lt;br /&gt;This gives the designer much more visual information on the performance of the system and allows for better fine tuning. This is great for playing around with heuristics and visualising the effects of any changes. It also gives good visual indication of where geometry layouts result in inefficient path finding using the A Star algorithm and allow you to do something about it or at least make decisions about how path finding in those areas will be executed. (This is a well recognised issue with A Star where, in the worst case scenario, certain combinations of start and end points combined with geometry can end up with it searching through practically every node on the grid before resolving the path). &lt;br /&gt;&lt;br /&gt;As my system can divide long path searches over multiple frames where needed this is less of an issue but the visual feedback can result in minimisation of these issues by aiding the designer tweak the level design.&lt;br /&gt;&lt;br /&gt;I'm off on holiday with my family later tomorrow (a complete break from computers for a while ) but will be concentrating on developing some real AI capability for my engine and editor on my return.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-2537907811569392021?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/2537907811569392021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/07/latest-tweaks-to-navarea-editor-path.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/2537907811569392021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/2537907811569392021'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/07/latest-tweaks-to-navarea-editor-path.html' title='Latest tweaks to the navArea Editor Path Finding display'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-4289885573553664247</id><published>2010-07-19T11:43:00.002+01:00</published><updated>2010-07-19T11:47:24.318+01:00</updated><title type='text'>navArea Editor Demo - The final part</title><content type='html'>The final part of my navArea editor demo. This demo expands on what we saw in the first 3 and shows it applied to the whole test area. It features 40 NPCs/objects all being simultaneously animated and also demonstrates my destructible object class.&lt;br /&gt;&lt;br /&gt;No NPC combat as yet .... that's next on the list!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Part 2b&lt;br /&gt;&lt;object width="384" height="308"&gt;&lt;param name="movie" value="http://www.youtube.com/v/L8sn5kA7eKs&amp;amp;hl=en_GB&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/L8sn5kA7eKs&amp;amp;hl=en_GB&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="384" height="308"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-4289885573553664247?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/4289885573553664247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/07/navarea-editor-demo-final-part.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4289885573553664247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4289885573553664247'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/07/navarea-editor-demo-final-part.html' title='navArea Editor Demo - The final part'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-4667190993630869225</id><published>2010-07-06T21:43:00.010+01:00</published><updated>2010-07-08T00:15:33.712+01:00</updated><title type='text'>navArea Editor Demo</title><content type='html'>I decided to make some short videos of my navArea Editor to give people an insight into how I create my pathfinding data and some of the AI I'm developing.  The first part is complete and is split into two videos due to the time exceeding the you tube limit of 10 minutes.  I have to say I've gained a new respect for people who narrate on videos as I found talking my way through it a lot harder than I thought it would be.  Anyhow, please find the first three below, there is more to follow (they are best viewed in the 480p setting):&lt;br /&gt;&lt;br /&gt;PART 1a&lt;br /&gt;&lt;object width="384" height="288"&gt;&lt;param name="movie" value="http://www.youtube.com/v/tJ_DhjMBSTA&amp;amp;hl=en_GB&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/tJ_DhjMBSTA&amp;amp;hl=en_GB&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="384" height="288"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;PART 1b&lt;br /&gt;&lt;object width="384" height="288"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yy659hbDrVU&amp;amp;hl=en_GB&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/yy659hbDrVU&amp;amp;hl=en_GB&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="384" height="288"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;PART 2a&lt;br /&gt;&lt;object width="384" height="288"&gt;&lt;param name="movie" value="http://www.youtube.com/v/U-csE7nbVvg&amp;amp;hl=en_GB&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/U-csE7nbVvg&amp;amp;hl=en_GB&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="384" height="288"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-4667190993630869225?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/4667190993630869225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/07/navarea-editor-demo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4667190993630869225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4667190993630869225'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/07/navarea-editor-demo.html' title='navArea Editor Demo'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-438209469484257958</id><published>2010-06-29T21:25:00.003+01:00</published><updated>2010-06-29T21:35:02.623+01:00</updated><title type='text'>Latest Developments</title><content type='html'>Work continues on my AI and Editor.  I have today added the ability to add any number of NPCs to the level in the editor and assign patrol groups to them.  &lt;br /&gt;&lt;br /&gt;One thing that is becoming apparent is the need to change the user interface with regard to function selection and data entry as the functions available and planned have far outgrown the initial concept of the navArea editor and I'm running out of space with the original design.  It's not a big job and I'll give it some thought in the next week before deciding on what to implement but I don't want it to hold me back on pressing on with the AI design and testing if I can help it.&lt;br /&gt;&lt;br /&gt;Work continues on paper on my cover point design and that's next to be implemented and tested .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-438209469484257958?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/438209469484257958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/06/latest-developments.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/438209469484257958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/438209469484257958'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/06/latest-developments.html' title='Latest Developments'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-4037499258635216757</id><published>2010-06-24T11:25:00.003+01:00</published><updated>2010-06-24T11:39:19.607+01:00</updated><title type='text'>Continuing Success</title><content type='html'>Things are definitely progressing nicely.  I now have in place the ability to shoot NPCs along with body impact position detection and the ability to respond with appropriate animations and other responses.  Shoot an NPC in the side and he bends that way, shoot him in the main body and he doubles over forwards, shoot him in the head and he dies, shoot him in the leg and his running and walking speed is reduced.&lt;br /&gt;&lt;br /&gt;It's all great fun and really starting to come alive.  Watching it unfold in the test editor is its own reward.  I'm finding writing states for FSMs really intuitive and am currently only hindered in what I'm achieving by the limited time I have on an evening to work on this.&lt;br /&gt;&lt;br /&gt;Next up is cover points and the ability for NPCs to seek cover when attacked or defending.  Then it's getting the NPCs themselves to use the 'Line Of Sight' information I already have working to attack me and eventually each other as I introduce NPC Groups and develop factional fighting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-4037499258635216757?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/4037499258635216757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/06/continuing-success.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4037499258635216757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4037499258635216757'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/06/continuing-success.html' title='Continuing Success'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-5987537120177946233</id><published>2010-06-16T10:13:00.002+01:00</published><updated>2010-06-16T10:59:01.755+01:00</updated><title type='text'>Short Update</title><content type='html'>Implementation of my AI design continues with some success.  I have coded in Editor support for adding infoWaypoints (waypoints which can have information tagged against them) and an infoWPGroup capability which allows you to create named groups of waypoints for Patrol sets etc and assign any number of waypoints to these.&lt;br /&gt;&lt;br /&gt;I have also implemented a FSM (Finite State Machine) system as an initial AI control mechanism which is also working well so far (but will see how I get on with this as behavior trees are a possibility too).  This has been used to create a few states to control Patrol behavior.  Basically a PatrolGroup (infoWPGroup) is assigned to an NPC along with a default starting waypoint. Under 'no threat' conditions the default behavior is to Patrol. The NPC can be spawned anywhere on the level in an Idle state and will walk to the Patrol start position and then walk the set of patrol waypoints.  Full path finding is used for every move to produce realistic avoidance of level geometry.  I have NPCs walking patrol paths that traverse the level, walk round buildings, climb stairs and walk round balconies etc).&lt;br /&gt;&lt;br /&gt;I'm looking to expand on the current functionality by adding NPC groups next so that various factions of NPCs can be created and also tasks and behaviors be assigned to NPC Groups as well as individuals.  This will eventually lead to factions capable of fighting each other.&lt;br /&gt;&lt;br /&gt;Also expand on the infoWaypoint functionality by having NPCs react to embedded commands in waypoints (might be pause at this waypoint for 30 seconds and look in this direction for example) or use waypoints as indicators (cover points etc).&lt;br /&gt;&lt;br /&gt;In addition I'm looking to expand the Patrol capability to include the ability for the AI Manager to dynamically re-assign patrolling NPCs as existing NPCs are killed to ensure patrol routes continue to be manned where numbers allow.&lt;br /&gt;&lt;br /&gt;Then my intension is to work on forming some good defend and attack AI which will form the bulk of my new development over the next few months.&lt;br /&gt;&lt;br /&gt;I'll post a video as soon as I have something worthwhile showing.  I'm knee deep in ideas, design, implementation and testing at the moment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-5987537120177946233?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/5987537120177946233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/06/short-update.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5987537120177946233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5987537120177946233'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/06/short-update.html' title='Short Update'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-2638493915419783683</id><published>2010-03-06T12:36:00.002Z</published><updated>2010-03-06T13:06:37.080Z</updated><title type='text'>Editor expansion</title><content type='html'>Have been working on re-structuring and consolidating my path finding functionality within the editor to provide a better framework for being able to implement AI; such that the AI can be configured and tested in real time in the editor using loaded levels.&lt;br /&gt;&lt;br /&gt;The saving and reloading of static path finding data to binary files is complete and working.  The framework has also been updated to allow for work to be queued prior to execution and the work load shared across multiple game loop iterations , if needed,  helping to reduce the impact of heavy loads on frame rate.&lt;br /&gt;&lt;br /&gt;Work has now started on introducing real AI capability with lots of paper based design and illustration exercises taking place to identify key components and framework structures necessary to allow this to all come together and interact successfully.  This is still ongoing but I'm starting to implement elements of it in the editor as and when I'm happy their design is unlikely to change.&lt;br /&gt;&lt;br /&gt;The big decision on whether to use fsm (finite state machines), decision trees or both is yet to be made and will probably finally be decided by practical application of both methods and the feedback obtained.  &lt;br /&gt;&lt;br /&gt;Lots to do but getting very interesting!  I shall of course put a video out when I've reached a point where I think I have something worth while showing (this won't be until I at least have some real combat up and running).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-2638493915419783683?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/2638493915419783683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/03/editor-expansion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/2638493915419783683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/2638493915419783683'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/03/editor-expansion.html' title='Editor expansion'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-4864481700820042863</id><published>2010-02-13T00:07:00.003Z</published><updated>2010-02-13T00:20:47.566Z</updated><title type='text'>Small Update</title><content type='html'>I've decided for just now to stick with my own path finding solution but have coded the high level path finding calls in my AI manager so that I can literally substitute any path finding solution in there without affecting my AI. This was done with the intension of swapping onto a navmesh solution later, probably recast.&lt;br /&gt;&lt;br /&gt;I've not really done much coding since Christmas due to a diversion into rigging and animating models and other things which have eaten into my time.  However, it's now headlong back into the coding to get the next phase of development done.  I'm very happy with some of the changes Josh has been introducing into the engine recently and the progress others are making on their projects.  Leadwerks has never looked so vibrant!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-4864481700820042863?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/4864481700820042863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/02/small-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4864481700820042863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4864481700820042863'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2010/02/small-update.html' title='Small Update'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-5660145959726916135</id><published>2009-12-10T18:42:00.003Z</published><updated>2009-12-10T19:01:07.832Z</updated><title type='text'>Into the unknown ... I may be gone awhile</title><content type='html'>I'm now entering what has to be the most difficult and sustained period of programming and design I have undertaken so far.  Game AI is not to be taken lightly and is the next phase of my game engine development. This is completely new to me, never having coded any AI before, but I have the path finding in place which is a good foundation and my editor to test it all in as it evolves. As a result this blog is likely to go fairly quiet for the next month or two before I hopefully emerge with some real game AI capability.&lt;br /&gt;&lt;br /&gt;Chris is continuing to make good progress with his AI solutions and I now have a recent copy of his code.   Part of the up and coming weeks will be spent looking at this and deciding if that's the route I want to go down or if I want to continue with my own path finding and develop my own AI with the option of integrating elements of the libraries/code Chris has been using that may be of benefit.&lt;br /&gt;&lt;br /&gt;Some difficult decisions ahead but I'm looking forward to getting into the detail and a whole new learning curve, spurred on by the goal of being then able to build fully interactive worlds and NPCs.&lt;br /&gt;&lt;br /&gt;I'm sure I will emerge from this journey a lot wiser and probably with a new respect for those guys who have written AI for other engines!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-5660145959726916135?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/5660145959726916135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/12/into-unknown-i-may-be-gone-awhile.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5660145959726916135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5660145959726916135'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/12/into-unknown-i-may-be-gone-awhile.html' title='Into the unknown ... I may be gone awhile'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-4855491221627985310</id><published>2009-12-02T01:03:00.001Z</published><updated>2009-12-02T01:07:15.880Z</updated><title type='text'>Latest video</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/VKOwdqWmj4k&amp;hl=en_GB&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/VKOwdqWmj4k&amp;hl=en_GB&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Sorry, no sound on this as yet but thought I'd put this out anyway.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-4855491221627985310?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/4855491221627985310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/12/latest-video.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4855491221627985310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4855491221627985310'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/12/latest-video.html' title='Latest video'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-3951785799150749671</id><published>2009-11-30T22:59:00.003Z</published><updated>2009-11-30T23:05:41.250Z</updated><title type='text'>Started documenting my navArea Editor</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_KyiiDAhYqhs/SxRPcf8WpaI/AAAAAAAAABM/FwNVmMDxt64/s1600/STRANDED+-+Camp+Fire+in+navArea+Editor.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 253px;" src="http://2.bp.blogspot.com/_KyiiDAhYqhs/SxRPcf8WpaI/AAAAAAAAABM/FwNVmMDxt64/s400/STRANDED+-+Camp+Fire+in+navArea+Editor.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5410036403408381346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In case I decide in the end to stick with my own pathfinding \ AI solutions I started documenting my navArea editor tonight.  It's still not completely finished but all of the components are there and it does work rather well and it's a good foundation on which to expand on.  I am really interested in exploring a true nav mesh solution but it's nice to have something to fall back on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-3951785799150749671?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/3951785799150749671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/11/started-documenting-my-navarea-editor.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/3951785799150749671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/3951785799150749671'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/11/started-documenting-my-navarea-editor.html' title='Started documenting my navArea Editor'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_KyiiDAhYqhs/SxRPcf8WpaI/AAAAAAAAABM/FwNVmMDxt64/s72-c/STRANDED+-+Camp+Fire+in+navArea+Editor.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-147671391934268798</id><published>2009-11-29T18:39:00.004Z</published><updated>2009-11-29T18:58:34.454Z</updated><title type='text'>Moving along</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_KyiiDAhYqhs/SxLBTMeI_ZI/AAAAAAAAABE/anIuSXHocv8/s1600/STRANDED+-+Camp+Fire+3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 301px;" src="http://1.bp.blogspot.com/_KyiiDAhYqhs/SxLBTMeI_ZI/AAAAAAAAABE/anIuSXHocv8/s400/STRANDED+-+Camp+Fire+3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5409598637934706066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Leadwerks Engine 2.3 is here and things are moving along quite nicely.  I'm now fairly happy with the scenes I'm creating.  There is plenty of room for improvement but I am satified I can get the type of graphical quality I was aiming for.  &lt;br /&gt;&lt;br /&gt;On the programming front Chris and I are shortly to be exchanging code modules which will mean I get  to inherit the nav mesh and AI stuff he has been working on and he gets to inherit my player\user input\ weapons control module and the destructible objects.  It's an exciting time as the combination of these should mean we will shortly both be in a position to realy start building the foundations of games with interactive NPCs.  It's going to take a little time yet but I feel like we are entering a new phase and will finally be in a position to start designing some effective combat based missions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-147671391934268798?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/147671391934268798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/11/moving-along.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/147671391934268798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/147671391934268798'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/11/moving-along.html' title='Moving along'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_KyiiDAhYqhs/SxLBTMeI_ZI/AAAAAAAAABE/anIuSXHocv8/s72-c/STRANDED+-+Camp+Fire+3.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-525914982045750059</id><published>2009-11-16T18:33:00.003Z</published><updated>2009-11-16T18:56:49.981Z</updated><title type='text'>The trouble with birds .....</title><content type='html'>is they have a tendency to fly away and that’s exactly what they have been doing.  Had to plug a hole in my algorithm which resulted in the occasional bird flying off into the horizon until I had none left.  Have been working on a scene to show these off but need to get a bit more work done on my navArea system and basic AI first before posting.&lt;br /&gt;&lt;br /&gt;Have also been taking a good look at the Unreal Engine SDK with its impressive toolset and attempting to ascertain the pros and cons and the size of the learning curve required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-525914982045750059?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/525914982045750059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/11/trouble-with-birds.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/525914982045750059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/525914982045750059'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/11/trouble-with-birds.html' title='The trouble with birds .....'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-7793205556959872237</id><published>2009-11-05T18:08:00.002Z</published><updated>2009-11-05T18:17:44.157Z</updated><title type='text'>Bird flight</title><content type='html'>Not managed to do much recently as we have been struck with a bought of winter illlness in the family.  However,  I have purchased a nice animated bird model and have subsequently created a flyingBird class to control it which simulates random flight patters over a given area.  It's a bit of fun really but adds to the realism when playing levels. &lt;br /&gt;&lt;br /&gt;I have to get down to finishing the destructibleObject class next by adding the flammable object support as previously described. That's next on the agenda with this weekend looking likely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-7793205556959872237?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/7793205556959872237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/11/bird-flight.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7793205556959872237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7793205556959872237'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/11/bird-flight.html' title='Bird flight'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-563688585235231969</id><published>2009-10-24T20:30:00.002+01:00</published><updated>2009-10-24T20:40:03.119+01:00</updated><title type='text'>Breakable Objects Done</title><content type='html'>I have successfully coded the breakable objects functionality today and now have breakable crates up and running.  Tomorrows work is going to be fun as it's the coding of the flammable objects side. &lt;br /&gt;&lt;br /&gt;This I suspect is going to take some doing as I have to figure out a way of making fire appear to spread realistically over objects and between objects.  I will need a different system of propagation as the previously coded destructible objects are all activated by collision or impact force.  That's clearly not a mechanism for propagating fire.  Ah well ... another day another challenge!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-563688585235231969?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/563688585235231969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/breakable-objects-done.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/563688585235231969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/563688585235231969'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/breakable-objects-done.html' title='Breakable Objects Done'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-6473479160949622089</id><published>2009-10-24T09:58:00.004+01:00</published><updated>2009-10-24T10:27:37.492+01:00</updated><title type='text'>Work Continues</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_KyiiDAhYqhs/SuLCHM0oWXI/AAAAAAAAAA0/hU3xobm59F4/s1600-h/Explosions.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 299px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396088732500121970" border="0" alt="" src="http://1.bp.blogspot.com/_KyiiDAhYqhs/SuLCHM0oWXI/AAAAAAAAAA0/hU3xobm59F4/s400/Explosions.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Not managed to get much programming done this week but am hoping to get the code in place for normal breakable items (creates etc) and flammable objects this weekend.&lt;br /&gt;&lt;br /&gt;I'm also hoping to have a look at Chris's integration of the ReCast navigation mesh library and see how it handles my current test game level. He's kindly given me the code to play with. Although I have my own pathfinding system in place ReCast is far superior (it was written my the Technical AI Director for Crysis after all) and it would be foolish not to look at it.&lt;br /&gt;&lt;br /&gt;On another note I was interested to see Matt's latest video showing off his latest level for his Horror genre game.  He jumped to Unity a little while back.  This is an engine I had not previously rated to highly mainly due to a failure on my part to be impressed with anything much I has seen made with it rather than the potential of the toolsets which had always looked impressive.  However, I have to say Matt's video looks very impressive.  It's in its early development yet but the lighting and atmoshere looked spot on and the overall feel was very polished.   Great work Matt!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-6473479160949622089?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/6473479160949622089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/work-continues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/6473479160949622089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/6473479160949622089'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/work-continues.html' title='Work Continues'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_KyiiDAhYqhs/SuLCHM0oWXI/AAAAAAAAAA0/hU3xobm59F4/s72-c/Explosions.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-7742230814321259331</id><published>2009-10-18T10:21:00.004+01:00</published><updated>2009-10-18T11:46:25.387+01:00</updated><title type='text'>Exploding barrels</title><content type='html'>Things are progressing nicely and I now have enough of the class structures in place to have created and tested the classic 'Exploding Barrels'; almost a pre-requisite in First Person Shooters ;-)&lt;br /&gt;&lt;br /&gt;There is a lot to do yet in terms of putting the flesh on the bones but essentially the basics are all working.  Hoping to make some considerable inroads today ... all being well.&lt;br /&gt;&lt;br /&gt;This is fun code to write :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-7742230814321259331?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/7742230814321259331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/exploding-barrels.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7742230814321259331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7742230814321259331'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/exploding-barrels.html' title='Exploding barrels'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-774588869597848677</id><published>2009-10-10T09:41:00.004+01:00</published><updated>2009-10-10T09:51:32.138+01:00</updated><title type='text'>Destructible objects</title><content type='html'>Moving on again, I'm now working on a destructible object system.  Based on a prefabricated approach it will allow items to be placed in the level and assigned a series of meshes representing the broken bits of the object, details on whether the object is flammable and whether it may explode along with details on what impacts are required to trigger any of these and the explosive force released so that cascaded events can take place.  &lt;br /&gt; &lt;br /&gt;Its early days yet but I have animated explosions in place and am working on producing the broken mesh parts for some simple objects (barrels and crates).  A lot of coding and testing will then follow.&lt;br /&gt; &lt;br /&gt;As soon as I have anything of significance I'll post an update.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-774588869597848677?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/774588869597848677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/destructible-objects.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/774588869597848677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/774588869597848677'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/destructible-objects.html' title='Destructible objects'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-274477836000583190</id><published>2009-10-01T22:41:00.003+01:00</published><updated>2009-10-01T22:46:14.708+01:00</updated><title type='text'>New system has landed</title><content type='html'>My new PC has arrived and I'm really pleased with it.  Have been able to run the Leadwerks Island demo with the full waves for the first time ever.  Crysis also runs with everything full on and is looking really nice.&lt;br /&gt;&lt;br /&gt;Meanwhile, I have completed the code for aquiring weapons and ammo from the level and its all working really well.  Have started work on the player HUD now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-274477836000583190?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/274477836000583190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/new-system-has-landed.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/274477836000583190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/274477836000583190'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/10/new-system-has-landed.html' title='New system has landed'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-3643832135977332392</id><published>2009-09-27T22:13:00.002+01:00</published><updated>2009-09-27T22:18:09.459+01:00</updated><title type='text'>Timings</title><content type='html'>The timings I measured tonight have re-assured me.&lt;br /&gt;&lt;br /&gt;Typically the time spend in the player class update is well under 1 ms with typical values ranging from 1.6 to 2.4 ms with the weapon animations running which seems not unreasonable especially given my current slow system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-3643832135977332392?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/3643832135977332392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/timings.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/3643832135977332392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/3643832135977332392'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/timings.html' title='Timings'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-6041623806272061134</id><published>2009-09-27T13:07:00.004+01:00</published><updated>2009-09-27T13:45:45.078+01:00</updated><title type='text'>Steady progress</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_KyiiDAhYqhs/Sr9eLz-RwYI/AAAAAAAAAAs/6l0mILV9Xx8/s1600-h/STRANDED++-+Editor+Shot+M4.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 253px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5386127236381393282" border="0" alt="" src="http://2.bp.blogspot.com/_KyiiDAhYqhs/Sr9eLz-RwYI/AAAAAAAAAAs/6l0mILV9Xx8/s400/STRANDED++-+Editor+Shot+M4.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Development of the Player Class has continued to go well this weekend and I have now added ammo control and player health.&lt;br /&gt;&lt;br /&gt;The configurable element of this class has made it so easy to add new weapons. The total time to add a new M4 Assault Rifle this weekend was 30 minutes:&lt;br /&gt;&lt;br /&gt;27 minutes to go the conversion of the animated model and textures to gmf format with mat files&lt;br /&gt;&lt;br /&gt;3 minutes to add it to my engine and have it up and fully running as weapon4 triggered by the number 4 key with select, deselect, fire, idle, reload animations, weapon assigned damage force and sound complete with full ammo control.&lt;br /&gt;&lt;br /&gt;This self configuring OOP approach has paid big dividends and the editor is now starting to look like a playable game in its own right.&lt;br /&gt;&lt;br /&gt;I'm looking to add some HUD elements next and then support for weapon acquisition and ammo loading from placed weapons and ammo stashes in the level.&lt;br /&gt;&lt;br /&gt;I will run some accurate timing tests later today to get a feel for the efficiency of the system and post the results. I'm hoping despite its complexity that it's still reasonably efficient and doesn't eat to far into that valuable 'between frame' time&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-6041623806272061134?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/6041623806272061134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/steady-progress.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/6041623806272061134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/6041623806272061134'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/steady-progress.html' title='Steady progress'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_KyiiDAhYqhs/Sr9eLz-RwYI/AAAAAAAAAAs/6l0mILV9Xx8/s72-c/STRANDED++-+Editor+Shot+M4.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-1768373930461362467</id><published>2009-09-25T16:47:00.003+01:00</published><updated>2009-09-25T16:57:05.440+01:00</updated><title type='text'>Latest Progress</title><content type='html'>Sound, muzzle flash light and animation, and bullets now implemented and all working nicely. Need to add some nice physics objects to my test level now to allow me to play with it. I'm also going to add an RPG and a suitable animation for the grenade firing and subsequent explosions.&lt;br /&gt;&lt;br /&gt;Hoping to leave this soon and get on to designing the AI proper; now that I have the where for all for testing it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-1768373930461362467?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/1768373930461362467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/latest-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/1768373930461362467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/1768373930461362467'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/latest-progress.html' title='Latest Progress'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-4666129875882287011</id><published>2009-09-18T22:28:00.005+01:00</published><updated>2009-09-18T23:11:41.632+01:00</updated><title type='text'>For those who might be interested</title><content type='html'>&lt;strong&gt;&lt;span style="font-size:180%;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:180%;"&gt;User Input Class&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Basic Description&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Processes user input, both keyboard and mouse and provides an event notification registration process for other Classes using a callback system for the notification. Registered notification events can be of two types, single or continuous. Single will result in a single notification following the event, such as a press and release of a key, or the click of a button. Continuous will send repeated event notifications for the duration the key is depressed or mouse button is held down.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Detailed description&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object creation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A simple constructor using no parameters is used for object creation&lt;br /&gt;&lt;br /&gt;e.g. userInput ui;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Registration of external requests for event notification&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;External classes can register for callback notification of user input events they are interested in. They call the following public function:&lt;br /&gt;&lt;br /&gt;bool registerUICallback(void* pObj, void (*p2Function)(void* p2Function,std::string EventDecriptor), std::string uiEventDescriptors);&lt;br /&gt;&lt;br /&gt;passing a pointer to themselves (their class instance)&lt;br /&gt;the callback function they provide (see detail below for exactly what they need to provide)&lt;br /&gt;a string containing sets of comma separated event descriptors and their type (single of continuous)&lt;br /&gt;&lt;br /&gt;The calling classes are required to provide a static callback function for the User Input class; defined as follows:&lt;br /&gt;&lt;br /&gt;static void uiCallback(void* p2Object, std::string keyEventDescriptor);&lt;br /&gt;&lt;br /&gt;The function name is immaterial as it is passed to the registration function at run time and stored but the parameter types must be exactly as shown above. This callback function wll be called by the User Input module when ever a registered event occurs and will be passed a void pointer to the originating class instance along with the event descriptor as a string.&lt;br /&gt;&lt;br /&gt;In order for a non static member function to be subsequently called the receiving class will also need to define a member function which is then called by the static function and passed the descriptor string. This ensures access from the function to all of the class objects members.&lt;br /&gt;&lt;br /&gt;So an example of the above static function and the subsequent called member function might be:&lt;br /&gt;&lt;br /&gt;void player::uiCallback(void* p2Object, std::string keyEventDescriptor)&lt;br /&gt;{&lt;br /&gt;// Explicitly cast to a pointer of the class type&lt;br /&gt;player* mySelf = (player*) p2Object;&lt;br /&gt;&lt;br /&gt;// call member&lt;br /&gt;mySelf-&gt;uiEventReceived(keyEventDescriptor);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void player::uiEventReceived(std::string keyEventDescriptor)&lt;br /&gt;{&lt;br /&gt;// Do something with it&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;User Defined Keyboard and Mouse mappings&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is provided courtesy of a ascii text configuration file. It basically contains a series of eventDescriptors and the associated key/mouse event as comma separated pairs. This allows the use of descriptive names such as ‘fire’, ‘jump’ etc to be used and simply mapped to whatever keyboard/mouse action you desire.&lt;br /&gt;&lt;br /&gt;They are loaded using the following private member function called from the constructor:&lt;br /&gt;&lt;br /&gt;bool loadUIDescriptorMappings(void);&lt;br /&gt;&lt;br /&gt;This loads the pairs into a map container for use later when doing event to descriptor mappings.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Registered Event Descriptor Data&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;When event notification items are registered by external classes details of the calling object, the callback function, the events and their associated event types are stored in structures which are in turn stored in a SubcriberEvents multimap container using the mapped event as the key. The mapped event is obtained by looking up the registered descriptor in the Descriptor map container to see if it has a mapping. If it does the mapped event is used. If not, the original registered event descriptor is used.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update function&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is called once per iteration of the game loop and carries out the following functions:&lt;br /&gt;&lt;br /&gt;Clears any previously stored keyboard/mouse events&lt;br /&gt;Scans the keyboard for input events and stores them in a set container&lt;br /&gt;Scans the mouse for input events and stores them in a set container&lt;br /&gt;Generates subscriber callbacks&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Generation of subscriber callbacks&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is achieved by iterating through the set containing the user input events and checking if we have matches in the SubcriberEvents map container. If so, the structure containing all the relevant data to make the callback is retrieved and the call made passing back the original event Descriptor as registered. Events of the type single generate just a single callback per keypress event whilst events of the type continuous generate a callback for every iteration of the game loop whilst the key/button is depressed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-4666129875882287011?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/4666129875882287011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/user-input-class-basic-description.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4666129875882287011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/4666129875882287011'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/user-input-class-basic-description.html' title='For those who might be interested'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-8223610411494351962</id><published>2009-09-18T16:11:00.005+01:00</published><updated>2009-09-18T18:46:27.068+01:00</updated><title type='text'>Progressing nicely</title><content type='html'>Everything is working beautifully in my Game Engine; I'm really pleased with the results.  I am fine tuning the event notification system so that actions that only require a single notification of a key having been pressed do not get continuous notifications whilst the key is depressed; as is the case at the moment.  This will cut down on the overhead of callback firing where it's not needed.  I'll accomplish this by adding another configuration item for the notification Type 'single' or 'continuous' so this again is not hard coded in the engine and can be externally configured against any notification item.  I hope to get some timings done this weekend to see how efficient the system is. The configurable speed settings for each of the animations (in FPS) is working very nicely as are the configurable keys and mouse events. Simply edit the key mapping file to change any of the weapon animation key or mouse assignments and the engine responds.&lt;br /&gt;&lt;br /&gt;Then the intension is to add the muzzle flash and sound in along with the damage decals.  Then onto coding the weapon projectile stuff and handling the collision and application of forces to the targets.&lt;br /&gt;&lt;br /&gt;I lost a lot of time last weekend when my PC went into multi re-boot mode.  Took me till the Sunday to find the culprit, as it was intermittent, but it proved to be my Anti Virus software which appeared to have corrupted itself.  This was sufficient to panic me into buying a new system which has been long needed.  It's being built at the moment and hopefully will be delivered and up and running in about a week’s time.  Can't wait!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-8223610411494351962?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/8223610411494351962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/progressing-nicely.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/8223610411494351962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/8223610411494351962'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/progressing-nicely.html' title='Progressing nicely'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-5512676820239979406</id><published>2009-09-15T19:28:00.003+01:00</published><updated>2009-09-15T19:35:51.781+01:00</updated><title type='text'>A slight hickup in the master plan</title><content type='html'>It appears that when the leadwerks rendering window is running as a child of a parent window, as in my editor, the keyboard and mouse capture using the leadwerks functions is not 100% reliable.  I'm getting issues with missed keyboard and mouse events when the focus is moved from the leadwerks window, which I guess is only to be expected.  As a result I'm going to have to take all user input via windows api functions when running in this environment.  In the meantime, I'm going to port what I have to my Leadwerks game engine and test it there where this won't be a problem.  I can then at least test the full working functionality of the Player object and do some timings on the OOP stuff to see if it's efficient enough.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-5512676820239979406?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/5512676820239979406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/slight-hickup-in-master-plan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5512676820239979406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5512676820239979406'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/slight-hickup-in-master-plan.html' title='A slight hickup in the master plan'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-5606906166850623749</id><published>2009-09-13T00:49:00.002+01:00</published><updated>2009-09-13T01:00:15.710+01:00</updated><title type='text'>Event notification system up and running</title><content type='html'>Well after many hours of pulling my hair out I now have a basic event notification system up and running and can register events on behalf of my Player object with my User Input object which will notify my Player object when those events occur by means of a callback.  It all works dynamically at run time from values set in a config file with nothing hard coded in the engine itself; making it completely generic.  That’s the major hurdle over and hopefully tomorrow I can complete the remaining code and test it all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-5606906166850623749?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/5606906166850623749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/event-notification-system-up-and.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5606906166850623749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/5606906166850623749'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/event-notification-system-up-and.html' title='Event notification system up and running'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-8718431627370201822</id><published>2009-09-09T17:21:00.003+01:00</published><updated>2009-09-11T10:38:42.114+01:00</updated><title type='text'>User Input module</title><content type='html'>Have finally settled on writing a new User Input module (class) to handle all the keyboard and mouse input and support a system of callbacks where other modules register requests for notification of user input events and provide function pointers for callbacks.  In this way the Player module can simply request a 'fire' event notification, for example, along with a callback function pointer and the User Input module can have this mapped to any key or mouse event giving complete freedom to configure the game controls.  Whenever a registered input event occurs the User Input module will translate it to the mapped event and trigger the callback.  I think this will give me the flexibility I need and keep the code as generic as possible allowing everything to be externally configured.&lt;br /&gt;&lt;br /&gt;If it hadn't been for the need to use User Input in the editor I would just have coded the User Input handler directly in the Player Class.  But for that reason it would be kind of nice to keep them apart, so long as the cost in performance is not too great.&lt;br /&gt;&lt;br /&gt;I have added a little facility to aid with the placement of weapon animations in the editor.  The animations can now be positioned in real time with the mouse. The position vector is displayed on screen.  This allows optimal positions to be easy found for each of the animations and the vectors simply input into the config file for use from that point onwards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-8718431627370201822?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/8718431627370201822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/user-input-module.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/8718431627370201822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/8718431627370201822'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/user-input-module.html' title='User Input module'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-7352006764129954409</id><published>2009-09-08T18:05:00.003+01:00</published><updated>2009-09-08T22:08:41.212+01:00</updated><title type='text'>Dynamic event notification system re-think</title><content type='html'>Having pondered this requirement for a dynamic event notification system I have decided not to go down the road of using the Leadwerks callback system. Although I believe I could fashion a working system using this it would most likely be clumsy and not that efficient; as it’s based around Leadwerks entities and not my internal class objects.  &lt;br /&gt;&lt;br /&gt;So I am now going down the line of writing my own event notification system which will accept input triggers from any other modules, such as the User Input module, and marry those to requests for notification from other modules, such as the player module. The requests will need to be made at run time as I cannot know before hand what the contents of the config files are. The system will need to create the necessary hooks to accommodate these; probably using run time provided function pointers for the callbacks.  All theory again at the moment, we will see how this eventually works out.&lt;br /&gt;&lt;br /&gt;If anyone out there has experience of such things I would be very interested in hearing from you. Or any alternatives for that matter!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-7352006764129954409?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/7352006764129954409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/dynamic-event-notification-system-re.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7352006764129954409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7352006764129954409'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/dynamic-event-notification-system-re.html' title='Dynamic event notification system re-think'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-134094063328522327</id><published>2009-09-07T20:36:00.003+01:00</published><updated>2009-09-07T20:57:28.769+01:00</updated><title type='text'>Player class config file and event handling</title><content type='html'>I now have all the animations loading from an external config file which is really nice as I can define all of the properties of the various player animations in this and the code just loads and controls it all. This includes all of the start and end frames, associated sounds, trigger keys for animation segments, toggle keys for enabling/disabling weapons/animations etc.  Default animations and animation segments can be flagged as well and will be the ones to initially load and render.&lt;br /&gt;&lt;br /&gt;It has highlighted the need for a system of dynamically defining and triggering callbacks when trigger events occur, such as the trigger key presses for the animation segments. The file defines these in relation to the animations, the system will dynamically set these up and then the player class will be automatically updated with only the relevant key press/mouse click events it requires to action them following the update call. &lt;br /&gt;&lt;br /&gt;Will take a long hard look initially at Leadwerks support for callbacks as I don't want to re-invent the wheel and if I can use that to accomplish what I need ... I will. That's the theory anyway; I have yet to implement it. If I can get this final part working then I think I will have an incredibly easy to use and setup player class!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-134094063328522327?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/134094063328522327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/player-class-config-file-and-event.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/134094063328522327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/134094063328522327'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/player-class-config-file-and-event.html' title='Player class config file and event handling'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-7975950139207652957</id><published>2009-09-05T18:39:00.004+01:00</published><updated>2009-09-05T22:33:47.843+01:00</updated><title type='text'>Player class well under way</title><content type='html'>In order to test AI in my editor it was obviously essential to have a player character and as such I started work last night on a Player Class.  I have the basis of this up and running in the editor now with some initial weapons animation in place, but more to the point a design which accommodates any number of weapon/player animations to be loaded and implemented seamlessly.  Apart from instantiating the player and overriding any default characteristics the only call required is a player.update() call per game loop.  Weapons can be equiped/de-equiped using configurable keys and the animation elements triggered in the usual ways. Animation speed is also configurable on a per animation basis.&lt;br /&gt;&lt;br /&gt;There is no associated sound or emitter support in there yet, I'll be starting work on that shortly, but the whole process has proved to be a lot easier that I had initially thought and I'm hoping to be able to move on from this fairly shortly and put the bullet support in place.   It's been a productive weekend so far!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-7975950139207652957?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/7975950139207652957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/player-class-well-under-way.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7975950139207652957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/7975950139207652957'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/09/player-class-well-under-way.html' title='Player class well under way'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-6925574350005410093</id><published>2009-08-26T19:15:00.003+01:00</published><updated>2009-08-26T19:36:58.229+01:00</updated><title type='text'>My latest train of thought on game objects and my editor</title><content type='html'>Since designing a fire object which encapsulated three emitters for the fire, smoke and heat refraction and also a flickering light allowing these to be placed as one into my game level where ever fire was required I've been thinking about this type of encapsulation of game objects and how they might be used / manipulated in real time in an Editor.&lt;br /&gt; &lt;br /&gt;It seems to me that it might be a good design strategy to have a base class that contains a standard parameter interface that all the game objects are derived from.  Basically, the idea being that each object could define its own set of parameters which are exposed through the interface to an Editor. This would allow the objects to be dropped into the game world in the Editor, say with a default set of parameter settings, and then manipulated in real time in situ in the game level until the desired effect is achieved.  The settings could then be simply saved to a level config file and loaded with the game level.  Being able to drag and drop game objects into the world and then size their elements in real time say with mouse drags seems a pretty nice scenario which would really cut down the time taken to set up levels and special effects.&lt;br /&gt; &lt;br /&gt;Just thinking aloud really at the moment but something I will give serious consideration to adding to my Editor.&lt;br /&gt; &lt;br /&gt;No other news really at the moment.  I have finished the few little excursions into other areas I was working on and will now be settling back down to writing the AI stuff at last.  I may be gone some time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-6925574350005410093?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/6925574350005410093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/08/my-latest-train-of-thought-on-game.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/6925574350005410093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/6925574350005410093'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/08/my-latest-train-of-thought-on-game.html' title='My latest train of thought on game objects and my editor'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-3971173018563921458</id><published>2009-08-20T19:00:00.007+01:00</published><updated>2009-08-21T10:09:11.587+01:00</updated><title type='text'>The Work So Far</title><content type='html'>A video of the test level I'm working on to prove my engine and level design:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="340" height="285"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CawcyOI3Fas&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/CawcyOI3Fas&amp;hl=en&amp;fs=1&amp;rel=0&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="340" height="285"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A pic of the navArea Editor as it currently stands:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_KyiiDAhYqhs/So2WLcGyG6I/AAAAAAAAAAk/2l3apPqsdKY/s1600-h/navArea+Editor1.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 400px; FLOAT: left; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5372115053790239650" border="0" alt="" src="http://3.bp.blogspot.com/_KyiiDAhYqhs/So2WLcGyG6I/AAAAAAAAAAk/2l3apPqsdKY/s400/navArea+Editor1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ongoing work:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Currently the main thrust of my development is to build on the foundation I've created in the navArea Editor and start to add the AI capability and functionality.  This is probably the hardest part of the coding and will involve the integration of configurable State Machines to control the game play and NPC decision making, an Animation Engine and a Time Division  Pathfinding Execution System allowing pathfinding to be spread over many game cycles if need be to reduce the impact per frame and maintain good frame rates.&lt;br /&gt;&lt;br /&gt;In parallel to this I will be gradually converting all of the models to Leadwerks gmf format and carrying out the texture conversions and generally maintaining the existing code in line with new releases of Leadwerks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-3971173018563921458?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/3971173018563921458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/08/work-so-far.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/3971173018563921458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/3971173018563921458'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/08/work-so-far.html' title='The Work So Far'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_KyiiDAhYqhs/So2WLcGyG6I/AAAAAAAAAAk/2l3apPqsdKY/s72-c/navArea+Editor1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5957314916148127865.post-2228763128776738436</id><published>2009-08-20T17:56:00.004+01:00</published><updated>2009-08-20T23:55:58.923+01:00</updated><title type='text'>My Development Blog</title><content type='html'>OK, so here it is, my development blog for my game STRANDED which I'm attempting to develop in my free time as a solo Indie developer using Leadwerks Engine 2.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The game&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;Essentially a fps aiming to emulate the fun and excitement I experienced with the original Unreal single player game. Initially set on earth the opening level introduces the main character (you - the player) and provides an opportunity to enjoy some combat as the initial story line unfolds. The rest of the game will find you stranded on a distant planet and having to use every ounce of ingenuity and skill you can muster to survive and eventually escape.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The scope of the project&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;To complete the first playable level to serve as a demo of the game's potential. A fully playable and interactive terrestrial based level leading to the first space based scene and eventual cut scene introducing the player to a beautiful alien environment that will become home for the rest of the game.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Where it goes from there&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;As a solo developer working in my free time it is unfeasible to continue beyond the initial demo without some financial backing or offer of partnership with other artists/programmers etc. Should that be forthcoming then maybe the whole game will see the light of day. If not then should sufficient interest be shown in the engine\toolset then I might consider making that available and remain open to offers to deploy my talent on other projects. Only time will tell!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The background so far&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;I've already spent some time with Leadwerks Engine 2 having licensed it back in it back in May 2008 and have seen it build in strength during that time. I am completely convinced that this engine is capable of producing games which could be competitive in the commercial marketplace. It remains just a question of time before this becomes apparent with the first release of a commercial Leadwerks based game. During this time I have gained a good foundation in programming using Leadwerks with C++ and have started to develop the first tools for my game, namely a Path finding and AI editor for setting up path finding in game levels and to act as a test bed for AI development for the game.  I have also acquired\purchased most  of the assets I require for the first level.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5957314916148127865-2228763128776738436?l=pixelsdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pixelsdevblog.blogspot.com/feeds/2228763128776738436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/08/my-development-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/2228763128776738436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5957314916148127865/posts/default/2228763128776738436'/><link rel='alternate' type='text/html' href='http://pixelsdevblog.blogspot.com/2009/08/my-development-blog.html' title='My Development Blog'/><author><name>Pixel Perfect</name><uri>http://www.blogger.com/profile/04568385019174785067</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
