Jump to content


  • Content Count

  • Joined

  • Last visited

Posts posted by Josh

  1. Version 5 is built around Unicode, using std::wstring everywhere.

    Leadwerks 4 supports Windows and Linux. The next version is planned to support Windows / Mac / Linux, and other platforms may be as well, since Vulkan makes this all a bit easier.

    Honestly, Windows is 99% of the PC market, and you will actually get a lower review score on Steam if you include a Linux build, because those users will disproportionately have compatibility problems and blame you it, (regardless of what engine or middleware you use). If you release a build for Linux I don't recommend making it available on Steam.

    You should probably be thinking more in terms of how many digital PC stores you can get a Windows build in, as that will actually make a significant difference in your sales. (Discord, GOG, Amazon, etc.) The Humble Store is now giving us about a third of our new sales, and I think Steam is going to become more insignificant in the future.

    • Like 2

  2. In Turbo, I switched this to a uint64_t value. On Windows, internally, the function uses timeGetTime(). However, this function returns a DWORD value, which is an unsigned 32-bit integer.


    Note that the value returned by the timeGetTime function is a DWORD value. The return value wraps around to 0 every 2^32 milliseconds, which is about 49.71 days. This can cause problems in code that directly uses the timeGetTime return value in computations, particularly where the value is used to control code execution. You should always use the difference between two timeGetTime return values in computations.

    This is actually pretty surprising. For games and even game servers, it is unlikely to cause problems but I can imagine a lot of other applications that run for months or years at a time that would encounter problems with this.

    • Like 1

  3. 2 minutes ago, gamecreator said:

    I love the engine being ready to use with any number of helpful libraries.  The ones I use most are Steam and of course the zip library (through Leadwerks) which lets you access data/pak/zip files.  That said, I think Steam would be easy to incorporate separately, if necessary.  I am planning on using GameAnalytics more heavily but I'm not confident that I could incorporate this easily myself (it also relies on libcurl, I believe).  And again, back on the other side of the coin, if there was a step-by-step incorporation tutorial for Leadwerks, I think that would do.

    What I mean is GTK and some other Linux libs that change with each version of Linux.

    There is another reason to make components optional, and that is because we can more easily update software for enterprise customers if they can skip optional components.

    Steam and GA would both be good candidates to make as a plugin, though I am not sure yet exactly how it would work.

    • Like 1

  4. We support Ubuntu 16.04. In the future I am going to use as few of third-party libraries as possible on Linux, but it's not possible to fix existing libs that keep breaking.

    The engine scales well, but you have to pay attention to optimization.

    I have seen people do things like have ten point lights constantly re-rendering a million extra polygons each frame, or a 10,000 poly collision mesh, and of course this can kill performance. Sometimes people want to just ignore these kinds of things, but optimization is an important part of development, and it should be paid attention to from the very start.

    The new engine I am working on does some very advanced things in order to handle the massive data the aerospace customers are working with, and I think this will have a good effect for game developers as well. It will still be possible to hit bottlenecks in the new engine, but I think most people will never come close.


    • Like 1

  5. Just posting my code here for the beginning of a file export for 3ds max:

    MacroScript SaveMapMacro
    	buttontext:"A Save GMF..."
    	tooltip:"A Save GMF..."
    	on execute do
    		try (
    			createFile "C:\\file.txt"
    		) catch (
    			format "*** % ***\n" (getCurrentException())

    You have to add the macro to the menu via "customize user interface". I started the name with "A " to make the item easier to find in that huge list.

    • Confused 1

  6. Quake 3 Arena player models are split into three parts. If you want to load them up, this is how:

    //Load Quake 3 plugin
    auto md3loader = LoadPlugin("Plugins/MD3.dll");
    //Load Q3A character
    auto head = LoadModel(world, "Models/MD3/bitterman/head.md3");
    auto torso = LoadModel(world, "Models/MD3/bitterman/upper.md3");
    auto lower = LoadModel(world, "Models/MD3/bitterman/lower.md3");
    auto tag_head = torso->FindChild("tag_head");
    head->SetParent(tag_head, false);
    auto tag_torso = lower->FindChild("tag_torso");
    torso->SetParent(tag_torso, false);


    • Like 1

  7. local window = Window:Create()
    local context = Context:Create(window)
    local gui = GUI:Create(context)
    local base = gui:GetBase()
    local sep=30
    widget = Widget:Slider(x,y,300,20,base)
    widget = Widget:Slider(x,y,300,20,base)
    while true do
            if window:Closed() then return end
            if window:KeyHit(Key.Escape) then return end
            while EventQueue:Peek() do
                    local event = EventQueue:Wait()
                    if event.id == Event.WidgetAction then
                    elseif event.id == Event.WidgetSelect then


    • Like 1

  8. 1 hour ago, Pepper said:

    I’m interested in the costs. If I pay for leadweks on steam is that a one off payment or do I need to pay a monthly subscription?  

    If you buy Leadwerks it is yours to use, forever.

    A new game engine called "Turbo" is being developed. You can pay a $5 subscription for access to the beta right now. When it is released, it will be available as either a subscription or a one-time purchase with annual optional paid updates.

    • Like 1
    • Thanks 1

  9. 30 minutes ago, Angelwolf said:

    Leadwerks is the only application which is doing this.

    I remember, however, that I recently installed Windows Blinds given there was a sale and I wanted to treat myself. Perhaps there's a compatibility issue between the two. I'll see if I can do some experimenting to confirm in case there are any other users that have this issue in future.

    I would say this is almost definitely the problem. I used to use some apps like this, but it can be very dangerous to mess around with your Windows theme with unofficial stuff. Once I tried to install some unofficial WinXP theme and the whole thing turned every element in the UI pure black. My computer started and ran but was impossible to use at all because everything was black. XD I had to reformat.

    • Like 1

  10. Reinstalling does not affect your projects but I doubt that would change anything. This sounds like a windows problem. You could delete your config file, but I think the problem lies with your windows updates or drivers.

  11. On ‎7‎/‎2‎/‎2019 at 4:17 PM, Daemoc said:

    The most important thing I learned is that you can have 10,000 lights on your map with no impact as long as they are not all being drawn at the same time. I will try to keep the light's on screen count under 10. I will also have to make sure the "detail" lights can be turned of on low spec machines.

    I think this will be easy to do in a top-down game.

    • Like 1
    • Confused 1

  12. It looks like in the above shot each floor tile could be 1.28 meters wide (the stairs are 2.56 meters wide). That means two tiles high would be enough for the character to walk under. It looks very close to that right now.

    But if you are more particular about the size then I can understand how that would be difficult to settle.

  13. Why would you use an odd number like 192? Why not use a pow2 number like 256 or 128? if you do this then it becomes very easy to line up geometry with textures details, like cutting a window out in the right place inside the outline of a window frame drawn on the wall.

  • Create New...