Jump to content

Flexman

Members
  • Posts

    916
  • Joined

  • Last visited

Blog Entries posted by Flexman

  1. Flexman
    We've been using the black and orange diamond logo for some time, it needed to reflect the game colour palette. As a 90's homage to sims of that era, a saturated colour scheme with the GUI elements using 90'-45' angles, black and orange. Two contrasting colours that are visible against most backgrounds.
     
    It wasn't until after I had designed and coded a number of elements that I noticed other military games using the same colours.
     
    Why bother with stuff like splash screens at this stage?
     
    They set a tone and expectation when showing demos, fix the colours and facilitate feedback on identity early on when things are still fluid. In our case, we have possible issues of copyright and licensing, issues that came about through the process of establishing identity. Matters that are hardly trivial.
     
    Plus the above vignette style works much better on multi-screen monitors when centred than the old one which was stretched. This has better overall presentation. Logo is still in flux but overall colours and shape are there and reflected through the whole game in every interface element.
     
    Source
  2. Flexman
    Today was spent working on reliable interface network client/server connections. It's apparent I need to add some additional items to the top of the screen:
     

    Current world time Mission Time (as offset of world time) Connection status indicators (connecting/connected/ping status)
    These to sit alongside the current game mode, camera mode and have a suitable background image.
     
    Testing is proving difficult logistically. I would like a fairly inexpensive second PC with small form factor capable of running the Leadwerks engine at a reasonable speed. Something that can sit on top of/or next to my main PC.
     
    Password protection seems to work with servers rejecting connections appropriately.
     
     
    Facebook
     
    I'm told everyone and their app has a Facebook page so here is the Combat-Helo Facebook entry. There is something of a virtual Apache walk-around with an internal one coming later, a collection of screen-shots in the galleries so you don't have to hunt around for them.

     
    Source
  3. Flexman
    We finally sourced a a reasonably good infantry soldier, low poly model, rigged, animated and exported. We can fill the screen with dozens of these guys, falling, shooting prone, grenade tossing. We'll give them a couple of weapons they can swap between and a range of helmets swapped in by setting an entity key.
     

     
    To initially test animation sequences I populated a drop-down control for the editor dialog with the following LUA, chopped up for readability. But lets you pick which frames to loop by name (or number). This is quite compact for AI troops which need to be lightweight in processing terms, this means non-use of character controllers.
     
     
     
    class.anim = {
    {"Idle",0,49},
    {"Stand and Fire",50,89},
    {"Running",90,111},
    {"Walking",112,147},
    {"Grenade Throw",148,187},
    {"Take Cover",188,213},
    {"Stand to Squat",214,241},
    {"Fire from Squat",242,291},
    {"Squat to Stand",292,313},
    {"Go Prone",314,359},
    {"Fire from Prone",360,379},
    {"Stand Up",380,425},
    {"Death Forwards",426,532},
    {"Death Backwards",533,568},
    {"Jump",569,614}
    }
     
     
    function class:InitDialog(grid)
    local choices = ""
    local total = table.getn(class.anim)
     
     
    for i=1,total do
    choices = choices .. class.anim[1]
    if (i < total) then
    choices = choices ..","
    end
    end
     
     
    self.super:InitDialog(grid)
    group=grid:AddGroup("Animation")
    group:AddProperty("sequence",PROPERTY_CHOICE, choices , "Animation")
    group:Expand(1)
    end
     
     
     
    function object:SetKey(key,value)
    if key=="sequence" then
    object.framestart = class.anim[value+1][2]
    object.frameend = class.anim[value+1][3]
    end
    return self.super:SetKey(key,value)
    end
     
     

     
     
     
     

     
    Source
  4. Flexman
    Another update of map progress on the SimHQ Combat Helo forums. Showing how the City of Herat as a sprawl of densely packed compounds and commerce is being built. Using blocks of prefabs and arranged on a grid. This is a selection of my favourite.
     

    Meant to be viewed from a low altitude, the prefabs do a good job of keeping the eye busy. Here is half a city already with parks and minarets to add. All built to be frame-rate friendly.
     

    And a mini-game for your base, the "Hello World" of physics engine programming, shooting hoops. Camp Stone has it's very own half-court.
     

     
    Source
  5. Flexman
    Before I code the address book, what do you think of this arrangement?
     
    I'm trying to keep interface items as simple as possible as I hate coding fiddly bits. But these things are mandatory for modern multi-player games.
     
    Source
  6. Flexman
    Dexsoft's Middle East City pack has been tweaked by the Dave-9000 supercomputer and has produced a low poly high density city block of 1038 polys. Requiring heavy edits of UV co-ordinates and placing all the textures onto a single surface for blinding performance.
     
    Perfect for iPhone and as a building block of the high-density city of Herat.
     

     
    Source
  7. Flexman
    Today I added the ubiquitous chat console complete with 4 colour coded channel presets, Global, Side, Group, Vehicle. Complete with command parsing (/setkey lets you send keys to any object you're standing before which is handy). The console also has a command history using the UP/DOWN cursor keys.
    Chat entry toggled by hitting the ENTER key ala Warcraft. Be aware that the primary action key has moved from the ENTER key to the "P" key (P for primary and also handily close to the square brackets used for menu navigation.
    Clipboard paste is supported via..
    Extern "Win32"{ Function OpenClipboard(hwnd%) Function CloseClipboard() Function GetClipboardData:Byte Ptr(Format:Int)}if(OpenClipboard(0)) String.FromCString(GetClipboardData(1));
     
    Console text entry mode also disables all input mapper KEY_DEVICE inputs to avoid conflict. It was important to Flush the keybuffer on exit otherwise all those spaces translated into SUPER JUMPS after entering text. Besides, you should always flush before you leave.
    Network comms chat is working fine except an occasional (Not Responding) display "freeze" only when the server was active. I thought was a problem with my Raknet interface but logs show packets still being processed by the game. The problem seems related to not wearing the TrackIR pro-clip device when the network is active. As soon as I put on the head tracker device the display responded normally as if nothing had happened, even chat catches up. Most odd as I've not experienced this with TrackIR before.
    Commands for server control are working including IP ban/unban. I do need to harden the user interface for network connections, the menus need to change to show the connection is already active and offer a disconnect. And the client needs a suitable connect-time period before giving up and allowing a re-try. We will begin NAT testing when I've got that sorted.

     
    Last night I made a DLL into which I was able to pass a structure containing flight data. It did nothing beyond reading it back but will be handy for exporting game data to third party programs.
     
    My TrackClip Pro has fallen apart. Only glue is holding it together.
     
    Source
  8. Flexman
    Airbase preview at our SimHQ forum.
     
    Gluing the airfield into place has been an interesting job, using terrain 'visibility' to cut out terrain chunks and fit it into place. Shindand airfield is used for medical and humanitarian flights, it's currently VFR only and no lighting system. We might modernise it a little for our scenario.
     
    Most NATO flights will come and go from here. A node system for AI aircraft to follow the taxiways and tank-off/land will be added.
     
    Multiplayer options starting to appear. The base sat-dish serving as network startup/shutdown. I'm using a red light on the dish to indicate offline and blueish-green to indicate connected status. We're using the tried and tested Raknet library, it's the only one I have experience with and quite reliable.
     
    These screens are from my forest test area and for testing purposes only.
     
    Command tent (that hanging light, I stole from an underground bunker). This is a spacious area where you'll find the mission terminal, chalkboard (scores/stats) and overhead projector display.
     
    Reality check. These command and briefing tents are normally enclosed/air conditioned and inflated. But in homage to older 90s sims we're using this. It's roomy and allows quick access. MMOs typically have overscale interiors/doorways to ease player mobility.
    This week allowed me to finish off the missing elements of the arming procedure. Loading rockets into zones and building the weapons page inventory. I did run into a slight discrepancy. As I allow each pod to be loaded with 3 different kinds of ammo, in the Apache you can only select 5 zones. I was torn between giving more flexibility to the player and keeping it simple or hardwiring 5 zones and cross-linking zones. For now I'm going to let the players have the extra zone and bump the additional level of realism to a post release update.
     
    Source
  9. Flexman
    My wife reminds me that it takes typically two weeks after each engine upgrade to get things working as intended.
     
    There's the odd "caps sensitive" issue in some of the LUA source. And a quick change of fw.Main to fw.main in Renderer to get ll the helo/sky scripts working. Rebuilding the lua-gluefunctions and making sure not residue from the previous version was causing problems.
     
    All that's left is handling changes of appearance and shaders....and re-serialising all of the 3D work.
     
    Performance is fantastic almost doubling frame-rates in our vegetation heavy scenes. The vegetation rewrite has been well worth the effort, with collisions and lighting changes. More varied lighting does a lot to reduce the uniform appearance at range. At least I hope the lighting variations are intentional and not some shader problem. The evening skies came out purple in the new version for some reason, now I really like this colour. It reminded me right away of the
    . Nailed the colour palette. 
    The downside is the need to re-export all the 3D work. The cockpit simply doesn't work anymore except for a couple of buttons. Interestingly the weapon arming only 50% works too, that uses linepicks also. And the upfront controller material has a normal map smeared over it. I'll have to look at the materials for these, make sure it's not using one.
     
    And the occlusion culling is a little problematic. Half of the cockpit vanishes at certain angles and the helipad and radio towers vanish, and when they do other objects tend to go with them. Those are typically large objects, the helipad is often positioned so it intersects the terrain. It's all very strange and interesting doing these updates
     
    I'm hoping a lot of problems are just down to the need to fix up the 3D assets. Some behaviours have changed, Coronas, I used as hazard lights are so dim they are hard to see. Also the sun as represented by a Corona, now seems to have been flung from the heavens and lets you 'walk' around it. But is still rendered in the background world.
     
    In the mean-time while I go through those assets I'll continue work on the current 'stable' build. I've added config options to set the server and port address with an 'auto join' flag to start the client mode after game load. The 'radar' dish (pictured above) is another interactive object that gives access to multiplayer options. Start Server / Client Connect and an as yet unimplemented address-book.
     
    I'd like to thank AndyGFX for his posts on migration issues past and present that helped enormously, and also Macklebee, Red Ocktober and others that have also been posting their issues and solutions.
     
    Source
  10. Flexman
    Formally announcing the foundation of the legal entity Tricubic Studios Ltd. developers of Combat Helo, associated content and iPhone/iPad games / applications.
     
    This doesn't change very much, it grants us a recognised identity for trading, taxation and investment. Plus we get a chance to develop an insipid company website. We plan to have our first mobile platform release ready for the summer. More details on that in a few weeks. Blog updates will continue at this location.
     
    Source
  11. Flexman
    It's not going to win any awards for realism but we have a rudimentary ENV environment class that handles time-of-day ticking and updating scene elements accordingly. Lighting, colouring, fog, sun position. Currently it's using computed light values which renders lovely post apocalyptic scenes, the colours are terrible IMO, looks like a nuke's gone off. A lookup table will be better and an exercise I'll leave for later. Also I added some data structures for moving weather zones around the map. These are trigger zones for adjusting fog density as you penetrate. To be used for any spot environmental effects we want to add, dust-storms, rain.
     
    Not clear how best to add the gradient data, the old Combat Helo code used a tiny 64x64 bmp. Can't seem to find the graphic I used.
     
    In the remote chance I get to implement "Megaparticles" (looks around for Shader X book) the skies would benefit from 3D looking clouds. Value vs. performance. Helicopters on our battlefield won't be spending much time at altitude and we're not a fighter sim. We can manage some rudimentary clouds but I'd avoid using particles. Fill rate costs are not worth it. Which leaves billboarding and textured planes which are cheap to render.
     
    iPhone development picked up a pace. With access to my big box of assets, Dormouse (lead dev on that project) was showing me how to fly a Sophwith Camel around with nice springy 3D person camera moves and the base skybox I just made for CombatHelo. Nice little exercise to explore what we can do with Unity iPhone. Some rudimentary shaders, OpenGL and javascript. From what I've been seeing, it's not that far removed from LUA scripting in Leadwerks although I find the way Leadwerks interacts with entities more intuitive.
     
    Dave, part man-part frame-buffer, tackled craters and we had the problem of blending them with the terrain, especially when we have massive z-buffer artifacts with co-planer polys near the outer-regions of the map. Leadwerks nice built-in library of shaders proivded the answer. Using a terrain hugging vertex shader, the crater morphs to fit, and the frag shader does a reasonable job of blending in the base texture to the terrain.
     
    And we have a new concrete bridge for Herat. The region map has been a work in progress for close to three months now. All the compounds, village buildings, structures number approx 502 with the airbase and the city of Herat yet to complete.
     
    It's a massive region on foot, and takes a while to fly across. Navigation is a bit of a problem, I hope to fix that with a pop-up map if I can work out how to blend the different map layers from the terrain buffers to make something readable. Otherwise it's going to have to be another pre-loaded DDS texture with enough resolution to zoom in.
     
    Here's more of my least favourite colour in games. Brown.
     

     
    Source
  12. Flexman
    Dave sent me his first bridge work for crossing the Death Star trench across our terrain.
     
    Pictured below is an editor scene showing it in place with some of our other 3D assets rolling across it.
     
    Five brickwork textures were used to break up the surface detail with colour matching used to make it blend with the terrain textures.
     

     
    Last night I finished playing around with the cockpit night lighting thanks to Bushmaster and his reference photos and nudging to fix the colours. Three rotary controls by the pilots left side control levels of the panel lights, dome light and backlighting. Having an little issue with the backlighting levels as I'm setting the levels by sending a uniform float to adjust levels of the glow shader, with mixed results, I'm doing something wrong.
     

    Have some details on the MPDs and navigation to sort out. The direct-to menu to add on the "M" key, rocket submode and the master arm on/off. I've borrowed some nice bullet code that I plan to adapt to the chain gun when these pages start driving me crazy again.
     
    The next month will have me looking at our iPhone game which is a way of supporting longer term development by using existing 3D assets in a two-minute finger shooter. We've been experimenting with the dev kits just to get a feel for the workflow and HID considerations. Our game is not ambitious, take-it out, play, spank some bad-guys. The platform is capable of a whopping 6k-8k polys with around 30 draw calls per frame, which is a little smaller than the typical 250k-500k poly scenes in Combat-Helo.
     
    Here's a parting shot of the CP/G station with panel lights and backlighting, again with the mock TADS image from another game (image supplied by Gary Wright). Hopefully it won't be too long before we get ours in place.
     

     
    Source
  13. Flexman
    All actions relating to the AH64D go though a message receiver. Player mount, dismount, ground crew arming, lights, AI commanding and (getting to the point) virtual cockpit interactions.
     
    The MPD button naming convention of "MPD_1_17" refering to MPD 1 (pilot left) and key 17 (counting from top left) that gets sent to the input handler for that MPD.
     
    Key messages can originate from the client or network. I had to add a source ID to account for situations where one person in the same vehicle has authority over some function.
     
    The keys and knobs are all working well, interacting with the avionics. I've removed some of the more obscure items and checking authenticity of some elements. Had to simplify a few things just because it's not intuitive. CTRL-G (default mapping) will switch to guns. ALT-G cycles gun round burst mode between 10, 20, 50, 100 and full. Burst is the number of chain gun rounds fired with each trigger pull.
     
    MODE is the method of gun tracking. It cycles between
     

    HMD (helmet mounted display, this is TrackIR or mouselook, where you are looking) FXD is fixed forward TADS is the current TADS position.
    This is a fairly important mode distinction, particually in co-op play as the pilot controls gun/rockets and the the co-pilot/gunner operates TADS and other weapons such as the AGMs (air to ground missiles).
     
    This I think neatly simplifies operation and easy to understand. For most situations you will want to leave it in TADS mode so you can quickly deploy cannon or AGMs against ground targets.
     
    MAN RNG adjusts the ballistics trajectory. Cycles between fixed ranges given in meters. It's there for completeness without adding complexity. It's a candidate for removal.
     
    AGM sub mode coming next unless something really cool happens
     
    Source
  14. Flexman
    Quick update. Busy working on a lot of small things. We have a cockpit update coming to update MPDs, internal and external night lighting. MPDs taking to the TStores class and working towards having a number of cockpit functions up and ready for the start-up. Dave added the CP/G throttle panel too (which removes the power switch and engine startup).
     
    Experiencing a problem with fps slowdown over time again. Mostly down to repeatedly running combat-helo, stop, edit, re-run. FPS drops to single figures. I'm not seeing main memory leaks and it doesn't effect other games. I'm not clear what is happening, a reboot fixes it.
     
    I wanted to see what the TEDAC would look like later so I was cheeky and borrowed a still from another game as temp background.
     


     
    Source
  15. Flexman
    The art-gnome at Combat-Helo has been playing with bloom and glow shader materials for the cockpit and came up with instrument night lighting. I thought it was a cool use of extra texture stages and materials with Leadwerks engine, it's an easy effect to add. With additional green point lights around the pit it should look pretty close to the real deal.
     


     
    Here's a real shot with night lighting. Panel back-lighting and small point lights.
     

     
    Source
  16. Flexman
    This is OpenGL, vector based rendered to an offscreen buffer, now with added mipmaps. I'll try and detail the functions of these pages and sub-modes as I go and allow you to submit corrections early on.
     
    The WEP (weapons) MFD page
     
    Pictured below shoing the gun sub-mode. Main feature is the bust limit selector on the left side indicating the number of rounds fired when the pilot commands. The bottom MFD buttons marked GUN, MSL and RKT will switch the weapons and display rounds and options. Stores and gun rounds to add to the display. Will complete tomorrow. The only other notable feature is the ACQ option (R6) to switch the gun aiming between fixed and TADS.
     
    The buttons marked with and arrow above (see top row) are for navigating to different pages. The bottom right button indicates the current page (WEP boxed). Next to that the selected sub mode (GUN boxed).
     

     
    Source
  17. Flexman
    AD has been finishing more of the villages and green zones around the region. You can read more about it here...
     
    SimHQ Dev Diary update
     
    This is "Dara" in the Northern region (See map below)

     
    Source
  18. Flexman
    I'm in the process of adding the weapon systems; avionics and links to the stores. While that's coming along at a steady pace I often come across a bit of code and think "I could quickly do this..."
     
    So I just quickly added the third-person cam; as we don't yet have any character models I'm having to use this laughable code generated place-holder.
     


    Character height is 1.8m.
     
    We're going to require a rigged humanoid with a number of animations for sitting, prone, kneeling, aiming, running, walking, waving etc. We have a list on animations somewhere, I'll try and dig it out.
     
     
     
     
     


    This is "Marshall" from BBi collectibles range (now discontinued). He's a great model, but the wrong sort
     
    Source
  19. Flexman
    Spent the day working on the Helicopter entity and the sub-classes that handle all the pylons and stores. It's worth spending time automating these things as much as possible now to simply things later.
     
    I broke out UMLet, a nice fast Java based UML editor to look at my structure. What's missing is the store-jett which needs to be a function of [TStore], pass it the pylon number and it will be required to generate the physics object, parent the rail/pod/fuel cell, detach it from the pylon and let Newton take over, thus letting the pod/rail complete with ordnance fall to earth.
     
    And by moving the [selectedZone] property to the [Pylon] from the [Avionics] class, it allows for the ground-crew loading system to simply add rockets and let the [Pylon] advance the zone so all 3 zones are populated in three clicks. That way it's not dependent on a playing crewing the Helicopter (as [Avionics] are only instantiated when you board a vehicle and destroyed on exit).
     
    This is all part of the process of adding the WEP MFD page which needs access to stores data and it gets it from the [stores] class, which can be thought of as a black box into which each pylon (4 of them) send signals about what is loaded where. And how to re-load of course.
     
    I'm torn about creating the whole WEP page graphic as a vector, I'd rather do that as textures scaled up can look a bit blurry. Cockpit builders might want a stand alone OpenGL client that doesn't require the 3D engine for displays so going native OpenGL makes adding it a cut and paste job.
     
    Source
  20. Flexman
    I needed to add some on-the-fly lookups for data stored in XML databases without having them gobbling up memory. Most games of this type had a vehicle and weapon database, usually with a rotating 3D model or picture of the object. Using the TxmlTextReader function with a cache works fine. Only need to do the lookup once when examining an object.
     


    All weapons come with suitable entries by entering the ground crew mode from proximity to any Apache helicopter. We can re-use this for tutorial pop-ups, optionally adding a tag to the XML entry that points to an audio file thus triggering playback. If that makes any sense.
     
    I mention it here as it just occurred to me and don't want to forget it.
     
    Source
  21. Flexman
    It's been a blissfully quiet weekend.
     
    The Combat-Helo configuration files are now in an easier to use XML format and I added a lot of extra options too. Player profile name, host IP, graphics filters etc. Fullscreen and Windowed modes having their own settings.
     
    Also experimented with light scattering, we'll be adding per time-of-day lighting and retiring the old LB2 style skybox. That's not a priority item just something that's nice to toy as a little break.
     
    Arming system which should have been completed already (lots of interruptions this week) has had some GUI elements added to it to improve feedback, just have to write the descriptions for all the ammo. The Apache is receiving the arming messages fine but not visibly showing the loaded rounds. On the whole, not too happy with all the GUI as it is. I made something that was easy to fit to multiple resolutions but it could use a little polish.
     



    I ran another test with the Autopatcher and it's still a bust. The file it's wanting is created server-side but the client patcher can't reach it. So another email exchange with tech-support tomorrow.
     
    Source
  22. Flexman
    hehe well the XPatcher2 software worked great for the upload, but the client program doesn't seem to want to work at all, requesting a file that wasn't supplied or exists.
     
    Might have to look at other some other software.
     
    Converting all config files to use XML format, this will make editing control inputs a bit easier later. They are rather messy atm and adding new options should be a lot easier.
     
    Source
  23. Flexman
    Currently testing the autopatcher software. Broadband upstream speeds being what they are, don't make this a fast process. The project core files are currently around the 300mb mark spread over 1300+ files. This will come down when we package them.
     
    The benefits of having an autopatcher is the ability to push updates for CombatHelo on a regular basis without too much hassle and players having to negotiate versions when playing with friends. Just run the updater and everyone should be in sync.
     
    Source
×
×
  • Create New...