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 : Animated Character Workflow Test
  2. 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 : I hate waiting in for deliveries! [HD]
  3. 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.
  4. Marleys Ghost
    I thought I'd spend a little more time on this integration, using the laptop whilst watching the Olympics. The next phase was to automate the routines for NPC update and compacting the code routines. Ultimately, the idea is that after the scene is loaded, it will be parsed and flagged Dark AI objects, NPC's, Paths and Zones will be set up automatically via information taken from the relative lua scripts. Paths and Zones will be later, collision objects are done, so I was working on how to go about NPC's using this method. As some may have noticed I am using the FPSC Model Pack 53 characters.
     
     



     
     
    I converted about 5 or 6 characters to Leadwerks format and all the weapons for this exercise. I will eventually convert them all but I hand "prune" the bones of the rig and that takes longer than I want to spend at any one time on this side project. The FSM is still very basic but the first goal was to derive a current Animation state with each of those states having sub-FSM's to dictate the current behaviour based on the previous state and internal and external inputs. The framework is in place for the animation state which is derived by performing Boolean logic on returned values and strings from the Dark AI runtime and some stubs are in place nested inside for some basic behavioural sub-FSM's. First though I want to able to set up the scene and then place all the Dark AI objects, NPC's, Paths and Zones directly in the editor and then use the load routines to set all that up in an automagic way inside the application. The collisional objects were easy and are done with some simple tick box flagging functionality added to their property scripts. The NPC's a little more in depth , due mainly to the large amount of usable settings! lol. But I wanted to be able to place the model and then assign it some basic attributes to be read on load, this included what weapon to attach.
     
     



     
     



     
     



     
     
    So that was the basic NPC property script setup (wasn't that painful anyway). So using the test scene from Leadwerks 2.5x + DarkBasic's Dark AI [Part 2], and placing a few enemies and some friendly's to look after the player, this is the result of the current stage reached in the integration.
     
     




  5. Marleys Ghost
    After the first hour and a half I spent on this little exercise, I followed it up with another couple of hours. The basic integration now has an animation FSM. All still pretty crude and basic but a template to build on at some later date. The NPC's Entity script controls the models animation routines and gun attachment, the c++ application interfaces with the Dark AI library, and then uses messaging to communicate with the NPC Entity via lua script. Again this was just more experimentation and practice for me using c++ to build up techniques that will be beneficial later. Special thanks to Pixel Perfect for pointing out the error in my ways with regard to text strings in c++. Anyway this is the result, I just threw in some values for speed and animation blending off the top of my head just to test the FSM functionality, it will need those tweaking, thats for sure.
     




     
     
    I'd have posted some pictures, but I seem to only have 7k of space left in the blog section, not sure why, as it was over 200MB last time I did an entry here and not just a link to an entry on my off site blog.
  6. Marleys Ghost
    I am currently working with EKI One, working through its format and structure, getting to grips with the lua behavioural scripting side and trying to brush up on my c++ skills, actually brushing up on my c++ skills is an overstatement as I don't actually have any to brush up! .. lol, I have also been going through my Blitzmax code and trying to compile all the game mechanic functions and methods into a single .mod, trying to keep things tidy. Whilst going through my **** drive, I mean, my well organised storage drive, I found some DarkBasic/DarkGDK stuff, which included the Dark AI library. I have never really used DarkGDK, although I did start out a few years back with DarkBasic. So I wondered (as you do), could it be utilised in LE2.5? Having never used Dark AI (which came in a bundle, that I have never used either, but it was a bargain lol) I knew that R.T.F.M. would be in order. If it relied solely on DBobjects and inherent DarkBasic functionality then probably not. I spent half an hour looking through the commands, and an hour later had it working in an LE context. So to answer the question, it seems you can.
     



     
    I'd have upped a better quality image but I am told "You can upload up to 7.74K of files "
     
     




     
     
    Its all a work in progress, and probably will remain that way as its certainly nowhere near the solution that EKI One is, but as an exercise it wasn't a bad use of a few hours.
     
    I will post a demo in the showcase later for those interested.
     
    EDIT : Demo posted here : http://www.leadwerks...-ai/#entry45564
  7. 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.
  8. 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.
  9. 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.
  10. 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.
     
     
    Colourful Behaviour.
  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.
     
     
    A* Pathfinding MapData Generator.
  12. 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.
     
     
    AI, Waypoints, A* Pathfinding, Lua & Leadwerks.
  13. 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.
     
     
    3rd Person Movement & Animation Control Rig Test
  14. Marleys Ghost
    Last September I mused about the concept of what I call Ambient NPC populations, 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, but may have some limited interaction with each other or the surroundings.
     
    I felt a new approach would be needed to sort through what was and was not required to achieve a similar environment in LE, I decided first to create the environment and to then set about, at different levels, adding in the ambient NPC population, the thought behind this was it would be easier to visualise what I wanted to see taking place, if it took place ... in place ... not the best description but I hope you will understand what I mean.
     
    So the first step is to create a small village environment and then to start adding in the population.
     
    Test/concept scene (test application screenshot): The Village of Swanwyck
     

     
    The important thing with this small test village level will be the roads/paths, as the first tier of the population will basically be simple "walkers".
     
    Even now, I am still formulating the different types required from "walkers" to simple "static actors" and how to implement some of those types to have different interaction levels. I will be utilising several different methods to allow the NPC's to navigate Swanwyck, from a simple "follow node" approach to predefined path data and on the fly A* navigation.
     
    I did have some very good results with A* pathfinding already, which can be read about here:
     
    A* Pathfinding Using Blitzmax And Leadwerks Engine
     
    Hopefully I can find the time to get "Swanwyck" up to a usable standard, and get the first tier of the "walking" population up and running.
  15. 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
  16. 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
  17. 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
  18. 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
  19. Marleys Ghost
    Last April, I blogged about the news that Crytek might be releasing a free version of the CryEngine, much in the same way that Epic did with UDK and the Unreal 3 engine and also Unity licensing the indie version of their engine as free. Well, it seems that this will happen with CryEngine 3.
     
    According to Crytek co-founder Anvi Yerli, "The barriers for entry will be very low, and perhaps [it will be distributed] for free." Details and a release date for this CryEngine 3 Lite SDK have yet to be announced. It seems resonable to speculate that such a release could be similar to what Epic Games did when it released its UDK tools in 2009.
     
    Full Article Here
     
    Sean Tracy also mentions this at the end of an interview recorded at GDC 11.
     


     
    It is turning out to be an interesting year for indie developers.
     
    Source
  20. 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
  21. Marleys Ghost
    Time is proving to be a most scarce commodity at the moment. So having a few hours spare I set myself some tasks and as usual did something completely different I started work on a room and ended up on a new 90 degree section, corridor doorway section (with separate reusable door frame / doors and simple placeholder keypad switch box all to need textures), a few WIP scripts for the doors and some hashed together sound FX for them to and a short corridor "Door Plug" section to allow the standard sections to fit the door frame. Part of the plan for this modular approach to the level is that as many sections/parts as possible will be able to "plug" into each other. I also wanted to test out some new base metal textures to try and break up the "monotone" look. The door keypad switch would also require some sort of 3rd person object interaction functionality which was hastily coded and again as with everything else, still very much a WIP.
     
     
    Simple keypad switch prop:
     

     
    Development in Silo PRO:
     

     
    A quick medium resolution video to show the "worksite" test scene. I can't take credit for the blue and yellow textures they are curtesy of Paint.NET's floodfill tool..
     
     


     
     
    Hopefully next week I will be able to free up more than only a few hours to get fully back into this "adventure", but I was not unhappy with the progress I made in only two hours.
     
    Source
  22. 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
  23. Marleys Ghost
    Firstly, I'd like to take this opportunity to wish you all a belated happy new year. I hope you all have had a great start to it.
     
    I have not been doing much on the coding front for the last few weeks. I decided to get some assets created and try and develop my texturing skills a little further.
     
    I also purchased Silo 3D Pro over the Christmas period as it was on offer. I had used the demo and was impressed at how "comfortable" it was to use. I now use this package as my main modeller but in conjunction with AC3D and UU3D. Basically Ultimate Unwrap 3D is the junction where all my modelling and art packages meet. Not only for Leadwerks with its .gmf export for both static meshes and animated assets but for all the engines I use, for me its an invaluable tool and a good investment for the minimal cost.
     
    I have need of a modular corridor/room set, and decided to set about seeing just how low you can go with the poly count and how much you can offset the inherent "flatness" of a low poly environment with normal mapping and "hand painted" textures. This would be moving on directly from a previous flirtation with texturing which can be found here. Some more incriminating evidence can be seen in the gallery as well, fairly obvious I am no artist.
     
    Another aspect of texturing I have been playing with is bump mapping. I use ShaderMap Pro which is great but making bumpmaps from diffuse textures can have horrible "side effects" when creating panelling.
     
    Diffuse only:
     

     
    Diffuse and Normal map created directly from the Diffuse texture by ShaderMap Pro:
     

     
    Not really the effect I was after. After a few ideas and some testing I found hand crafting a Normal map "template" from which a Normal map would be generated by ShaderMap Pro gave much better results for this exercise.
     

     
    I then made the first test section of the low poly modular level pack:
     

     
    The textures were then UV mapped onto the section in UU3D and then converted all over to .gmf .dds and created the .mat files using ADN ... I love ADN truly one of the most useful tools written by a community member ever!!
     

     
    I Lined a few of them up just for show .. 480 polys not bad .. considering the default rusty oildrum is 256.
     

     
    Encouraged by the result thus far I moved on, making the section bigger but retaining the tilable nature of the textures
     
     


     
     
    Unfortunately real life commitments caused a pause in my endeavours until a day ago so I have spent the last few hours refining some aspects and making a few more test sections:
     

     

     

     
    The overall effect of the technique I am developing can be seen better in this video (HD available):
     
     


     
     
    This is currently the point I am at, With some preliminary drafts for doors/doorways rooms and elevators/elevator shafts ect. I am trying to reach a point where variation is only a texture change away on standard section low poly models. I am still getting my templates organised and fine tuning the work flow and still very much a WIP, but so far I am quite pleased with the results.
     
    Source
  24. 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.
×
×
  • Create New...