Saturday 13 April 2013

Weekend Blog

Surprise Blog

I know I don't normally blog the weekend (otherwise the ritual would paint my addled brain into a corner from whence escape would be impossible), but the momentum of doing the Perceptual Computing Challenge has given me a sense that weekends are okay for extra coding.

The day light was spent shovelling shale from one side of my garden to the other, and the evening was spent watching the Magicians with David Mitchell and Robert Webb (very funny guys).  A bit of inspiring end credits music got me thinking that maybe I could throw a few hours at Reloaded, and so I did.

My Few Thrown Hours

It occurred to me at the end of a full week of Reloaded development that one of the biggest obstacles to quick progress was the speed of the DBP compiler (currently 3 minutes on my monster Reloaded PC).  I figured if I could have a faster compiler, I could do more compiles in the day and the thing I was tweaking or fixing or adding would be fresher in my mind and next week will produce even more Reloaded goodness.

Secret Super Coder

After ten plus years running a software company, you cannot help but perfect the art of delegation, and sometimes it pays dividends.  One such delegation brokered the assistance of a top coder, who kindly volunteered his time to help me spruce up the internal version of DBP, starting with the compiler, in anticipation of larger DBP projects such as Reloaded.

The fantastic news is that an early version of the new compiler has taken my compile time from 3 minutes down to 45 seconds, which is an immense speed boost when you are typically compiling about 100 times a day minimum.  My few hours this weekend in integrating this new version with the Reloaded dev set-up will save me literally days of time over the course of the remainder of this project!  Those acquired days can be fed back into the engine to make it even better and make my coding life sane once again.

Before every DBP coder starts jumping up and down, the compiler is far from finished and the 'super secret top coder' will want paying for his efforts too, so it will not be a free update.  My priority remains Reloaded all the way through to October, and all forces will be steadily employed in this direction, but along the way if the opportunity exists to commercialise these internal DBP enhancements, you will be the first to know!

A Note On Concurrency

The term 'concurrency' is often used to describe how many cores your app is using at the same time (i.e. running concurrently side by side). For fun I draw a few rooms and dropped a light into the map editor of the current Reloaded product. I then opened the performance profiler which indicates what my four cores where doing.  Guess what.  Processor utilisation was 100% from the moment the light was placed through to when the light mapping appeared.  That means all four cores where red hot to get the light mapping done as quickly as possible on the monster machine it finds itself on.  Intel would be very proud of an app like Reloaded, and for the first time FPSC will be tapping every corner of your processing power even as you edit and tweak your levels.


I also plan to get the same (or near) when you play the game too, thanks to the multi-core DarkAI system which will be asked to calculate some fiendish math to figure out the best way to strike at the player.  Getting full concurrency when you edit and when you play will mean we have a piece of software that pushes your machine to the maximum.

Signing Off

It's now 2:30AM and I will be turning in very soon.  I'm happy with this coding stint, not least because it has just improved my life by 2 minutes 15 seconds per compile and once I have stripped out the old 'build process' and 'blue print shroud system', the code base will be even smaller which means even faster compiles. That is, until I add the new bullet physics system, terrain system and combat intelligence systems the likes of which you'll have nightmares about. A big player in the internal Reloaded team suggested this product needs a killer feature to make it stand out from the crowd.  Rick, our resident pessimist[realist], concluded there are no killer ideas left, and everything has been done, and small teams like us don't have the manpower for that level of innovation. I disagree. I think it is precisely because we are small that we can take a risk on a killer idea that might very well transform the FPS genre forever. I don't know what the idea is of course, and I dare say it may never surface, but if you have an awesome idea you've never seen in an FPS, post your comments here, I read them all!

16 comments:

  1. Hi Lee , sorry but for now i don't have any idea for reloaded, but i just wondering, what application do you use to program, to create Reloaded Engine?

    ReplyDelete
  2. FPSC Reloaded is being programmed in DarkBASIC Professional (DBPro), just like the original FPSC was. Don't worry, even though the original FPSC is, by today's standards, a little on the crappy side, DBPro is a powerful and flexible language and Lee has definitely realised what modern game engines require; FPSC-R is going to be awesome!

    ReplyDelete
    Replies
    1. Thanks for the fast response!
      I am also developing software like games and applications and i was curious:). I never thought that it is programmed in Dark Basic Pro, i'm amazed cuz i thought it was pure C++

      Delete
    2. Nope, 100% pure DBPro :) The source code has been available for a very long time so many people have made many mods and most of the best have been integrated into the main code trunk.

      My custom-made line counter counts 57,451 lines in the latest FPSC source code!

      If you're curious, the FPSC source code is here: https://code.google.com/p/fpscreatorengine/source/browse/

      Delete
  3. I don't think it is a "killer" idea for fps games you need, but more so FPSC-Reloaded to be very versatile as a games creation engine! While I understand the intention of the product is to allow easy creation of First Person Shooter games, the moment you break away from that to a more all-purpose game creation engine is the moment the product could become infinitely more popular.

    What really makes FPSC a great product is the ease of creation it presents. But its downfall is its game-play limitations. Perhaps if FPSC-Reloaded gave us access to a more robust scripting tool, something in the likes of Unity that barrier no longer exists. Perhaps that should be its killer feature, incredibly easy but powerful scripting!

    Aside from that it would be great if you implemented an interactive HUD system, allowing us to use the mouse, click and drag elements to construct from the ground-up our own inventories and interfaces. The commands available in the current FPSC are project-killing limited. =(

    ReplyDelete
    Replies
    1. I agree. There's no one feature that would make FPSC-R super-cool. What FPSC-R really, REALLY needs is power and, more importantly, a great deal of flexibility.

      I'm actually a bit surprised that no one has yet created a visual gui editor for FPSC (well not that I've seen anyway). It should be fairly easy to do, though, so maybe someone will step up and achieve this for FPSC-R.....

      Lee, might I suggest that instead of creating a preset HUD system for inventory and the likes, create a system that can itself create an inventory gui, or an auto-targeting gui. This way we have 100% control over how it looks and how it functions and also allows us to create a gui for something you had never thought of doing. Would be difficult to implement but well worth it.

      I also agree that FPSC's current scripting system is limited. In a programmer's eyes it's also far more difficult to use than normal code, like DBPro or C++.

      Actually, now that I think about it, a Lua scripting interface would be near-perfect. I don't particularly like Lua as a language, but it's powerful and really, really fast. There's already a free forum-released Lua plugin that I use all the time plus you'd have free access to that paid Unity Lua plugin.

      Enough ranting from me ;)

      Delete
    2. You explain better what I mean.

      Reading over what I wrote, what I meant to say was both a HUD constructor, but being able to add interactivity to our HUD. For example, making a keypad where you can set up buttons, 1-9 to be pressed and enter that number. Ideally, such a system could be extended to inventory creation.

      This would open up an entire new area to add puzzles and other elements to ours games.

      Delete
  4. I teach game design classes and primarily focus on the Game Maker engine. The old version (GM8) had an easy to use point system and high-score you could drop into almost any game and my students loved it (the high score has since been removed in the latest GM Studio version). I would like to see FPSC:R have a system like this as well since I could easily imagine more arcade styled gameplay in the FPS genre. I believe it was Call of Duty that had an unlockable mode with points and multipliers for shooting baddies fast.

    ReplyDelete
  5. Some great comments and ideas here, thanks for the feedback. I like the idea of creating your own HUD layouts, and I have something along these lines in a basic form. I'll see if I can dig it out at some point once the more core items are in. I am not scrapping the FPI system as we need it for backwards compatibility, but perhaps after the V1 launch I could create a front-end for it to make coding, debugging, visualising easier, and perhaps add some more simple constructs like loops, switch cases, e.t.c. Is LUA fast do you think?

    ReplyDelete
    Replies
    1. It would me nice if there would be Day and night cykle.Or if u could do there co-op mode

      Delete
  6. My own personal and humble opinion is that for a killer feature for FPSCR Reloaded you dont need anything New in and of itself rather make good of the features that are promised that users need, particularly with regard to the basic requirements of an FP Shooter including those needed features referred to in the kick starter campaign and stretch goals and others perhaps that users have legitimately requested that perform basic tasks of a modern engine or game.

    What I mean by that is that FPSCR have killer edge and feature and be much sought after by making sure that the Killer feature is intelligent Character AI by building in "Awareness" for characters both civilian, enemies and possibly friendly team members. Whatever else you have Killer AI will be the Killer feature.

    By Awareness I mean as reflected in the enemies behaviours and ability to make decisions - (or apparently so) - clever AI. At the basic level this means - good physics as spoken of by Lee in the post above this one. Obstacle avoidance and movement around a level either via Awareness of the environments and ability to use them to advantage while avoiding collision, either by and preferably via all optional methods, free movement, definable nodes and or definable pathfinding nodes whilst giving the users the ability to control what they do at each point - wait point, obstacle and so on or allow a variety of random mix and match editable choices and those points. i.e. the ability to facilitate the best possible intelligent character behaviours. Potentially add speech and interaction with player and a decent set of animations to support all of that and you have it.

    It seems there is well enough to do getting a full featured game engine done with the features already speed and those much needed without needing something new. That can follow. Get the basics top notch is my opinion and the AI better than any other around at anything like this level of engine.

    Intelligent AI is a killer feature. Why? well because its not available and never has been in such an engine or never at all in any really in the indie class in a way which can take the average indie user and put that kind of power in their hands. This in an engine that places it in front of all to call upon and manipulate in an easy to use manner or relatively so.

    That seems to be a hard enough task in and of itself and seeing FPSCR enemies not getting stuck anywhere or having at least a mediorcre level of enough intelligence to not do that and outwit a user in an intelligent fashion now and again instead of getting killed instantly while they stop to reload their weapon or shoot at the player would be nice. Not sure about Killer feature but those current bad enemy behaviours mentioned above and more are certainly not - but do Kill an engine and game dead to a stop for users and game players.

    Theres no other engine that has easy to implement and applied quality AI and thats your Killer feature and always has been for any indie engine. In indie FPS its always been the most wanted by users and least achievable due to well known and obvious factors.

    Too many words but you get the point I am sure not that you dont already know. What other feature could possibly beat that?

    :-)

    ReplyDelete
  7. The only new very valuable feature I can suggest would be the ability to manage flexible Cameras to create a variety of in game view scenarios and flythoughs, attach to paths and perhaps other objects and alike so as to create levels for generating cut scenes/vidoes for game inclusion or promotion and or possibly attaching Cameras to objects for in real Game level use?

    That kind of thing may all ready be on someone elses list of suggestions I am sure.

    :-)

    ReplyDelete
  8. Peter, Cameras can already be attached to other entities, and then the enitity could be made to follow a waypoint. It could certainly be expanded though.

    ReplyDelete
  9. @Lee:

    Lua is very fast. It was designed to be fast right from the get-go. It's also very light-weight (which helps with its speed), so it won't bog down FPSC-R at all.

    @Peter Coleman:

    Absolutely. AI is very difficult to implement as an indie developer and is almost never available to them for an indie-level price. FPSC-R needs to be able to supply AAA-quality character AI (and this means "thinking" characters - take a look at the Half-Life 2 characters).

    @Everyone:

    FPSC-R does NOT NEED a single killer feature. Let me illustrate:

    About two years ago, I discovered the UDK (udk.com). I thought, "This looks interesting". Then I opened its Features page and nearly died with excitement. There was not only one single feature that I thought was particularly great. I started reading through them all, and the more I read, the more excited I got. It was the sheer number of features that made me excited. AAA quality everything:

    Animation, AI, advanced sound systems, a particle editor, a cinematics editor, a world editor, a visual scripting tool, amazing lighting, amazing terrain, fast networking, destructible environments with PhysX, many amazing-looking shaders, extremely high-quality multi-core rendering, powerful scripting...I was awe-struck.

    Of course now I know the UDK doesn't run as fast as they made out. It's not very well suited to indie developers. The visual scripting system is only powerful if you first change a lot of scripts.

    The problem with using only one killer feature is that most people will think, "Wow, that's sooo cool, I want to buy this program!" But then they'll look at the other features, like the AI, lighting and physics, and think, "Well, FPSC-R has really cool [something], but it's no good for me because none of the other features are good enough". Don't put lots of effort into one part of the code or the rest of the code will be left to die. In the cold. And rain. And HAIL. MUHAHAHAHAHAHA!!! *a-hem*

    Clonkex

    ReplyDelete
    Replies
    1. This sums up exactly what I want (I know it can't happen) FPSC-R to be able to look like: http://www.unrealengine.com/files/features/rendering3.JPG

      And imagine if FPSC-R could look like THIS: http://www.unrealengine.com/files/features/lightmass8.jpg

      Delete
  10. Really nice and very pretty blog it is. I like all your ideas and collections.
    Auto Etching Line

    ReplyDelete