Jump to content

Marleys Ghost

Members
  • Posts

    2,157
  • Joined

  • Last visited

Blog Entries posted by Marleys Ghost

  1. Marleys Ghost
    To prevent non Leadwerks Engine specific/Related entries from my Blog being automatically published here via the Blog Feed, I have removed that functionality, and will simply add a new entry title and link here for all Leadwerks Engine specific/Related entries.
     
     
     
     
    Leadwerks Related Blog Entry.
    Leadwerks 3.2 Indie : Proof Of Concepts & Several Tests.
  2. Marleys Ghost
    Well that was a nice surprise, having resigned myself to the fact that even though it was the 23rd today, the time difference between myself and Pacific time meant I would have to wait until 8pm tonight to upgrade to 2.3
     
    But on awaking I found Josh had already sent the emails for upgrading .. Having today off means I can now spend it in its entirity "playing" ..
     
    Leadwerks Editor 2.3, New forum, Blogs, gallery, file storage, customizable profiles, videos...
     
    Who needs Christmas?
  3. Marleys Ghost
    Feeling the need to finally start sorting through my storage HDD's I came across my Blitzmax code library. I needed to test the code snippets and sort through what was worth keeping and what was broken. I found a FPS framework I had been working on but the code got broken with the release of 2.32, so before I binned it I thought I'd have yet another go at getting it at least to run. This was about 6.00 am monday morning, well I did have the whole of the day to myself, quite a rare occurrence. At around 11.00 am it was up and running, took an hour to locate all the assets it utilised lol. Still full of bugs and problems, I thought what the ... Heck .. and sat down with a gallon pot of coffee and tinkered with it ... and tinkered.. and tinkered a little more .. by the afternoon I was down to two issues, both to do with parenting objects in the transparency world. I left this and started looking through other code and slowly began to add different proof of concepts I had worked on over the last year or so...
     
    Don't you just hate it when that happens ...
     
    OOP's I did it again ....
     
    I continued to tweak and tinker and add ..at around 10pm .. I had an Idea how to tackle the original transparency/parenting problem whilst chatting with Paul. At around 11.30pm I realised, the makings of a game had been born ... that game is currently known as:
     
    Furious Frank
     

     
    Well, its quite an easy "game" at the moment with infinite ammo and infinite life even if the HUD is telling me its running down .. but not a bad days work I felt .. hopefully next monday I can wrangle some more time and tweak it and add to it.
     
    If I get time today, I will upload a demo to the showcase under the title, MAGIA Monday (as I Dont have time to spend a month on it).
     
    Source
  4. Marleys Ghost
    Furious Frank V0.01 came about from my requirement to have a simple application in which to test code in my code archives from the last year. It What was supposed to be a simple cleaning out the harddrive exercise got a little side-tracked. This version was achieved in about 14 hours on a Monday.
     
    MAGIA .. Monday
     
    MAGIA .. Monday ... and a little bit
     
    Furious Frank V0.02 is the 10 or so hours I have worked on it since. With the prospect of a whole 3 days ahead with nothing to take up my time, I wanted to get Furious Frank V0.02 uploaded and start on Furious Frank V0.03. It has so far taken the best part of 3 hours to wrestle out that which was required for this demo from my oh so tidy development folder.
     
    I have coded the settings to make this still an easy "game", but as its still in development with feedback on the functionality and performance being more important, if you died in a few seconds then there would be nothing to report, except maybe "its too hard ".
     
    When you die you die, so keep that health topped up.
     
    Not had anytime yet to code and develop a spawning system for the Bugs so I kind of just drop them in on the player, so, wear a hat.
     
    Showcase Page & Download Link Here.
     
    Source
  5. Marleys Ghost
    Just a little update, I have managed only to grab a few hours here and there to spend on this since last Monday, and its now looking like it will not be until thursday when I can get into it like I did last monday. So heres a quick low quality video of how it stands at the moment.
     
    Have a good week all.
     
    I hope to get V0.02 uploaded by the end of the week.
     
     


     
    Showcase Page
     
    Source
  6. Marleys Ghost
    To prevent non Leadwerks Engine specific/Related entries from my Blog being automatically published here via the Blog Feed, I have removed that functionality, and will simply add a new entry title and link here for all Leadwerks Engine specific/Related entries.
     
     
    Leadwerks Related Blog Entry.
     
     
     
    Meet The Flockers.
  7. Marleys Ghost
    Working on two principles K.I.S.S. (keep it simple stupid!) and more for less.
     
    I spent a lot of time researching (read playing) certain games that have what I call an ambient NPC population. This is specifically those NPC's that reside in the background and generally have no real or very limited interaction with the player. Two such areas of research <coff> included Assassins Creed and Fable 2. Although both of these games have a far more complex general NPC population than what I am setting out to create, but the "research" was most enjoyable.
     
    First Step:
     
    Machine Intelligence "Kinda Almost":
     
    Machine Intelligence "Kinda Almost", simply gives an illusion that there is intelligence at work but there is not, sort of like, the lights are on but no ones home. There are several subsets to this group but the obvious one is simple animation. Also this can include proximity reaction behaviour, a posh and complicated way of saying when the player is near, stop what you are doing, and do this instead. But that's as far as interaction goes for those NPC's in this group. This simple ambient NPC type could also use lua scripts, loaded with the level and be left to attend to themselves.
     
    For example, just two chaps having a chat:
     

     
    Having a chat is basically all they do, its simple per character animation's controlled by lua scripts. The purple block volume is the walkable area that would be utilised by more "advanced" ambient NPC's, typically those that move about, particularly those that would use Pre-Loaded and Pre Calculated path routes for this particular level. The purple block volumes are simply required by the application I wrote to generate the route node data for the pathfinding tools I created and have demonstrated here. Not that this is a level just something thrown together for testing but I think I should unarchive some of my GMF format models and put together a small town/Village for testing this, rather than another simple "BlocksVille".
     
    There are obvious limitations to consider with this approach to the first tier of the Ambient NPC population for a "busy" town/village. The NPC's need animation's, most come with maybe 15 animation's (if you're lucky). My intention is to surmount this by adding animation's to them, primarily Mo-Caps. This will require a little work but will be the bedrock for the construction of this "tier". There are some very good applications on the market for achieving this. For me I prefer Fragmotion, there is also a free alternative that I also use on occasion called Pacemaker. But don't be fooled though, none of these applications will do it all "for you", you will need to skin the mesh to the correct rig for the plethora of free to use Mo-Caps, or indeed ones that can be purchased. It will all depend on budget and or requirement.
     
    This is still only a very basic outline for this "packing" stage, it will still require a lot of work but my goal is to get the impact of it at runtime to an almost negligible effect even when including proximity reaction behaviour.
  8. Marleys Ghost
    Actually I don't hate AppTime() I just don't like using it in some instances. Its extremely useful and from what I can tell a more accurate mechanism to use than AppSpeed().
     
    Whilst working on Furious Frank, one thing I noticed and it always caught my eye, was what I term “Chorus Line Syndrome” where using the basic AppTime() frame incrementing code for looping animations results in a regimented animation playback for like models/characters. I have ignored this issue thus far as it was not such a big deal in the early stages. However I decided it needed to be sorted, rather than just left as this issue will no doubt crop up again and its always handy when problems do arise again to have a basic template solution. First I took the lua entity script for the bug and removed all dependence on AppTime() completely using AppSpeed() to adjust for running speed variations. This worked fine but still broke down under high stress tests. The only way I can simulate high stress is to run some background applications and Fraps. Of course some breakdown would come about when the stress is heavy. I then switched to using a mechanism that relied on AppTime() as the base, but not in the same way that it was used for the basic AppTime() frame incrementing code for looping animations. There was still some breakdown under heavy load but not as much as the AppSpeed() based script.
     
    Utilising this script with other aspects to add extra randomness to same type character animation playback I made a few tests. The results are in the video below, in the first part the “Red Bugs” are running the original script and the “Blue Bugs” the new one. In the second half of the video I applied the template to some “Fast Horde” zombie AI I had been working on previously:
     
     


     
     
    Some synchronisation still occurs but that's just inevitable given the constraints of the character models used, that is, how many frames per loop are used in a cycle of animation and indeed how many animation types per action there are. Even slightly interrupting the “Chorus Line Syndrome” has much nicer results. I added some small mechanisms to the “Fast Horde” zombie script to continually mix things up over time. But all in all I am much happier with the results than not having addressed it. There is still some translational movement patterns, like the "flying V" the Zombies exhibit in the video now and again, but I already have a solution involving types of same entity types to add a few extra parameters to help limit the occurrence.
     
    As for Furious Frank, I'd like to say a big thank you to Paul Thomas for his contribution to this little side project. Paul kindly integrated into Furious Franks source code one of his older basic cloud and ToD (Time of Day) systems. It will need tweaking for the project but it was most generous. Heres a little look at the current stage of integration:
     
     


     
     
    When more time is permitting I will continue with working toward a release of Furious Frank V0.03
     
    The current version of Furious Frank can be found here:
     
    Furious Frank V0.03
     
    Previous entries for this project:
     
    MAGIA .. Monday
     
    MAGIA .. Monday ... and a little bit.
     
    MAGIA .. Monday .. a little bit .. and beyond
     
     
    Source
  9. Marleys Ghost
    Well, it has been a while since I made a blog entry, let alone done any work in LE. But I do keep an eye on the forum and Leadwerks in between Daily life and working on my project(s).
     
    I have also been going through my Blitzmax code archive, where I stored all my Blitmax/LE projects and code snippets (finished and not completed). One idea I had been playing with before, was basic NPC AI. I had some small success with some Bugs using autonomous logic.
     
    See Here
     
    In my "treasure trove" of unfinished and messy development code I found what was going to be the next step (for me) with AI functionality. The dreaded "pathfinding". I have read that Naughty Alien said he will be doing a two part tutorial on this and I am looking forward to that, having followed his work with Hidden Dawn I expect the tutorial to be top notch. But I wanted to get to grips with the in's and out's myself. So I started with the basics. I spent some time looking for code snippets and A* lib's in any language that had them to see of I could follow along what was being done ... Not a good place to start, in the end I spent some time reading "A* Pathfinding for Beginners", very helpful.I decided it would be best to start with a "2D" approach and maybe use nodes. Most 2D implementations use a grid based on the X and Y co-ordinates of the screen and tiles to represent an "unwalkable" tile. So I thought I would translate this approach to a 128 x 128 flat terrain with some primitive models to define the "unwalkable tiles". As this was a time limited "side-track" in LE from my other projects, it was all going to have to be quick and dirty. I wrote an app to calculate which "tiles" of the 128 x 128 terrain did not have an obstruction and then squirted this data out to a text file to be read into another app as a 2D array. The map data loads in a few milliseconds so this eliminated having to wait for the same data to be generated by the application I wanted to use to try and get the pathfinding working. One problem I did encounter was that I ended up trying to reconcile three different centre of origins for the co-ordinates. The map data had 0,0 at the top left, the terrain of course has 0,0,0 in the centre and my maths managed to get the A* to read 0,0 at the bottom left, after some profanity meditation I used some quick and dirty and hastily constructed math functions to bring them all into focus, thus as per usual the dev. code was a complete mess, atleast on that score I am consistent lol
     
     

     
     
    This version of pathfinding is very limited, mainly due to the way I created the node info. But for a first attempt I was quite happy.
     
    I have uploaded a demo App to the showcase , the picking can be a little temperamental and sometimes the quickest path is not always found and some "sightseeing" seems to find its way into the route. But on the whole I think it is definitely a platform on which to build.
  10. Marleys Ghost
    I started out yesterday morning looking to improve my understanding of types and methods in Blitzmax, and figure out how to use object-oriented programming (OOP) with it. I have only been programming in Blitzmax since the beginning of December last year, and only programming with C++ since the middle of October last year and The Leadwerks Engine since the beginning of October last year. So I am still on a very high learning curve in this regard.
     
    As usual, for me, I started out on one thing and ended up on another. I found a link on the old forum for a small tutorial on Object-Oriented Programming in BlitzMax By John Judnich. But by the time I had got to page 6 of 21, I was already off on a tangent and found myself working on a simple NPC type containing a creation method and simple seek behaviour method, after all I was now an expert after only 6 pages lol.
     
    I had already been "playing" around with some simple AI which showed vague promise, for an Idea for a small project.
     

     
    An hour and a few more "tangents" later I had managed to restructure the basic code for NPC creation and basic seek behaviour into an NPC Type using methods. This now allowed the easy creation of an NPC, in this case a rather nifty bug, created by ‘Psionic’, with its walking animation handled by its Lua script on load.
     


     
    The test scenes buildings are by GIMPY73 and the Freebeast model is by ‘Psionic’.
     


     
    Updated:
    Test of Basic NPC creation : Seek : Pursue : Attack Behaviour using OOP in Blitzmax running the Leadwerks Engine. Extra flags added for behaviour to the NPC Type with extra methods to communicate with the NPC model's Lua scripts for animation control. Although I did manage to hardcode a typo in the "Pursuit" flag.
     
    Of course this basic AI is nothing like the calibre of AI work being done by Chris Paulson or Pixel Perfect, but I had to start somewhere and this seemed the best place, so far I am pleased with my meagre results.
     
    I recall Josh showing interest in integrating Recast into the editor, this would truly be a useful addition. Leadwerks could really use an integrated AI starting point. Thats not a complaint just an observation. Recast integrated into the engine and editor could be that starting point.
  11. Marleys Ghost
    To prevent non Leadwerks Engine specific entries from my Blog being automatically published here via the Blog Feed, I have removed that functionality, and will simply add a new entry title and link here for all Leadwerks Engine specific entries.
     
     
    Leadwerks Specific Blog Entry.
     
     
    Quick 3rd Person View Character Test.
  12. Marleys Ghost
    To prevent non Leadwerks Engine specific/Related entries from my Blog being automatically published here via the Blog Feed, I have removed that functionality, and will simply add a new entry title and link here for all Leadwerks Engine specific/Related entries.
     
     
    Leadwerks Related Blog Entry.
     
     
     
    Revamping A Modular Assets Idea.
  13. Marleys Ghost
    Josh reported Christmas eve that There was a crazy sale on Steam and if you hadn't played STALKER, you could get it for $10.. well I had replaced my damaged copy only two days before that via steam .. and had cost me a whopping £1.39 ($2.22).. well if the $10 (£6.99) was still too steep a price for you, get over to steam now as its now only £2.00 ($3.24).. http://store.steampowered.com/app/4500/
     
     
     
    Ignore the date on this entry it was posted today (Jan 3rd 2010) but the Blog date system only goes up to 2009 for me there must be a switch around here somewhere ..
  14. Marleys Ghost
    With the basic texture workflow pretty much sorted for the modular level design (see here), I have turned my attention to getting a scale I am happy with. When this is done then after each section is modelled and then UV mapped it should be just a simple case of converting to .gmf format (famous last words). Scaling seems to be an issue that crops up across all the engines I use. But truthfully it matters not what others scale to, but that the relative scaling used in a scene is consistent for all static and animated meshes from props to scene to characters. LE has a scale of 1 unit is about 1m, I simply use 1 unit as 1m, therefore a character needing to be 6 foot tall would simply be a "metric" 6 foot.. or 1.8 units. This is the rule of thumb I use for all scenes and corresponding code. But sometimes its also good to check how it looks by eye. In a 3rd person situation its not just the scale of the level and the characters but having to remember the camera offset and how this would be effected. I normally do two tests, a simple static scene with characters and props placed to get a simple overall picture of the scaling.
     
     

     
     
    And I like to knock up a quick app with a basic 3rd person collision cam and have a quick walk through (HD available):
     
     


     
     
    So far I am happy with the results which means when time permits I can get on with creating the rest of the sections/rooms ect. I have also checked the scaling to make sure I can easily "block out" the level and run it through my pathfinding mapdata generator app which I had some success with in earlier tests of A* pathfinding (see here).
     
     
    Source
  15. Marleys Ghost
    I have not entirely made my mind up on the new SSDO (screen-space directional occlusion). I liked, in some circumstances, the effect SSAO gave, especially on bump mapped brick textures. But I find SSDO to be quite "fizzy" possibly from the curve on the camera look values. This may well be down to settings but so far try as I might I still get this. Not sure it will be useful in an FPS situation as the HUD model seems to interact.
     

     
    It does however have a very pleasing effect on "organic" assets.
     

     
    I think I will "play" some more with it, see if I can reduce the "fizzing".
  16. Marleys Ghost
    I was informed yesterday that the terrain hole functionality was working in Blitzmax, so I did a quick half hour test. This is a feature I find very attractive for level design. The ground cover (small bushes and ferns) is just place holder art, and all the foliage was just "slapped" in for effect. The concept is a simple, hole in the ground which gives access to (eventually) a large underground modular bunker system. A simple hole cover/access/room model was knocked up in 5 mins in 3DWS. The terrain is something I have been working on and have yet to finish.
     
     
     


     
     
     
    Source
  17. Marleys Ghost
    I recently asked one of my nieces who is currently doing media and photography courses at college to keep an eye open for some "Gnarly Wood" textures. She emailed with a few images she had remembered to take. I spent an hour or two playing with them and quickly knocked up a place holder model in 3DWS to try out the two textures I had made from the images:
     
     

     
     

     
    I then placed the model in an island scene I had built to test post processing effects using an application I have written in C++ using Leadwerks Engine 2.28, I was quite pleased with the result.
     
     

     
     
    Whilst my texturing skills still need development (as with everything else), I found it a very interesting exercise.
     
     
    Source
  18. Marleys Ghost
    "We're pleased to share the first ever in-game trailer for The Elder Scrolls V: Skyrim, the next installment in The Elder Scrolls series from award-winning creators of The Elder Scrolls IV: Oblivion and Fallout 3, Bethesda Game Studios. "
     


     
    You might find you need to log into Youtube to view the trailer for age verification.
     
    It seems Skyrim will be released world-wide on 11.11.11 on the Xbox 360, PlayStation 3 and PC ... so something to look forward to at the end of the year other than the cold weather. If they release another instalment of Fallout at the same time ... then hibernation this coming winter will just not be an option
  19. Marleys Ghost
    Following on from "On The Right Path, A* Pathfinding In Leadwerks" I thought before I archive the code, I'd have a little "dabble" with a basic function to get an NPC reading the path data and then following it to the "target" I had a couple of ideas on how to do this but as time for playing in leadwerks was running out I opted for a basic idea.
     
    1. Target Position Selected
    2. Path from NPC to selection calculated.
    3. Path transfered to a temp storage array for that particular NPC
    4. An NPC Pilot reads that data.
    5. NPC follows the pilot.
     
    Think of the "pilot" as the plastic stick thing on the underside of a scaletrix car .. it follows the groove in the track and the car follows right along. This was the quickest and dirtiest method but solved a variety of issues in one. Plus I just wanted to get the NPC moving and the sands of time were running out.
     
    So an hour later and I have not only the NPC following the generated path but the path is updated with a repositioning of the target and the pilot takes the NPC off onto the new track.
     
     

     
    This is all still quick and dirty, when I can remember what the code does and does not need, I will up a small demo.exe to the thread Pathfinding With A*
     
    EDIT: I have uploaded a demo.exe here : Hide And Seek Demo
  20. Marleys Ghost
    Well nothing much to report, that does not mean nothing much has been going though
     
    I have decided that as and when I make an emitter for a specific purpose, I will now create its own editor entity to save time by not having to create the exact same settings over and over. Also not every setting available needs to be adjusted so I will now re-write the properties to reflect what they effect and remove the ones not requiring adjusting for a particular effect and simply hard code them into the script.
     

     
    This sort of came about when thinking about trying to get weather effects into the editor and eventually into an app. This is one I did for snow. It's a simple emitter used to create a localised snow effect in the Leadwerks Editor, using a custom .dds file for the snow flake created in Paint.NET
     


×
×
  • Create New...