I'm finalizing the Ultra App Kit API, which is going to be the basis of the new engine's API. Naming commands themselves is always a bit of an art unto itself. Some things are named a certain way because it is common convention, like Stream::Seek() instead of Stream::SetPosition() and ACos() instead of ArcCosine().
Other times we have holdovers from old APIs or BASIC syntax like Stream::EOF() or String::Mid().
Should a class that has no SetSize() method use GetSize() or Size() for a me
A new update is available. This will cause the problem when the editor would crash on auto-loading a map with water on Linux at startup, and also fixes the problem where Lens flares weren't being hidden when you got close to them.
Right now I am working towards a stable build that can go onto the default branch and am not adding new features before then. If you have opted into the beta branch, thank you for the feedback you're providing.
Happy Halloween! The free Justine add-on for Amnesia: The Dark Descent is available. Just don't get too scared! B)
Leave a comment telling us how you are celebrating Halloween this year.
Today I am working out the file system for Android applications. In the past we just manually copied all our assets to a "/Leadwerks" folder on the device itself. This approach is okay for testing, but it won't work for distributing apps in the Google Play store.
Android uses APK files to store all applications in. An APK file is really just a ZIP file, and all your assets go in a /res/raw directory in the ZIP package.
To access the Android file system from C++, we had to take the fol
After a resolving a few odd and ends I was able to create a proof of concept of the deferred environment probe idea I talked about earlier. The environment probe is basically the same as a point light. They have a range and affect a finite area. The color property can be used to adjust the intensity of the ambient lighting / reflections. Basically, you want to cover your indoor environments with these, but it's okay if you miss some spots. The environment probes fade out gradually so you do
There are two aspects of GLTF files that have non-optimal loading speed. First, the vertex data is not stored in the same exact layout and format as our vertex structure. I found the difference in performance for this was pretty small, even for large models, so I was willing to let it go. Tangents can take a bit longer to build, but those are usually included in the model if they are needed.
The second issue is the triangle tree structure which is used for raycasting (the pick commands). I
Leadwerks Game Launcher was released last week as a free early access title. This means the release did not appear on the Steam new releases list, and its visibility is very low on Steam, unless someone is specifically looking for it. The final "real" release will see a period of high visibility. So right now the only traffic you should expect to get is what we drive to the Steam store page ourselves.
That said, Leadwerks Game Launcher now has 2000 users, and has very positive reviews so
I've now got the Vulkan renderer drawing multiple different models in one single pass. This is done by merging all mesh geometry into one single vertex and indice buffer and using indirect drawing. I implemented this originally in OpenGL and was able to translate the technique over to Vulkan. This can allow an entire scene to be drawn in just one or a few draw calls. This will make a tremendous improvement in performance in complex scenes like The Zone. In that scene in Leadwerks the slow step i
Our all-purpose action figure concept is complete, and he looks fantastic.
I am reminded of the great artwork on the packaging of GI Joe action figures from the 80s.
Rich has had some difficulty modeling a higher-detail pickup truck, inspired by the design of a Dodge Ram. According to him, curved vehicle bodies are much more difficult to get right than more angular designs. So that tells me in the future, we can get a jeep or something done much more easily than a Corvette, f
I recently published the full source code to my little mini-game "Asteroids3D". You can download it here:
Turning this into a VR game with Leadwerks Engine 4.5 was very easy. I will show you how here.
The first step is to enable VR. This code will check to see if OpenVR initializes correctly. If it fails for any reason, an error message will be printed and the game will exit:
if VR:Enable()==false then
System:Print("VR failed to initialize.")
return
end
Now we need to adjus
New commands in Turbo Engine will add better support for multiple monitors. The new Display class lets you iterate through all your monitors:
for (int n = 0; n < CountDisplays(); ++n)
{
auto display = GetDisplay(n);
Print(display->GetPosition()); //monitor XY coordinates
Print(display->GetSize()); //monitor size
Print(display->GetScale()); //DPI scaling
}
The CreateWindow() function now takes a parameter for the monitor to create the window on / relative to.
auto displ
I figured out how to make our GUI resolution-independent so that the existing editor code will correctly create items with the same proportions. This was very difficult, and it works really well! Some images aren't scaled here, but the important thing is the existing code is working the same, with no changes.
When the GUI is scaled to 200%, the buttons are bigger and indented further in from the right / bottom edges. The code that creates them just calls the parent ClientWidth() minus 74
An update is now available on the beta branch on Steam that includes all recently solved bug reports. The Linux build is performed with Ubuntu 18.04.
Don't forget to join the Discord video chat this Saturday at 9:00 AM PST.
An update is available on the beta branch on Steam.
Fixed missing fall damage: https://www.leadwerks.com/community/topic/17005-i-dont-get-fall-damage/
Fixed LoadAnimation bug: https://www.leadwerks.com/community/topic/16982-modelviewer-load-animation/
May have fixed VR player script and tracking on Oculus Rift.
If you have an Oculus Rift please try creating a new project from the VR template project and tell me your results. If there is still a problem I will go buy
In Leadwerks Engine 2.3, two rendering paths are used for point lights. One uses a depth cubemap (for shader model 4 hardware). The SM3 fallback uses an unwrapped cubemap on a flat texture. On SM4 hardware, a depth cubemap was used because it allowed a point light to be rendered in one pass. However, when implementing my double-buffered technique for point lights, some problems arose. As a result, I changed the renderer to draw point lights as a series of six pyramidal volumes. This is how
Once again, I like to attack the things I haven't done in the past first. I know how to make a CSG editor. What I haven't done in the past is a visual editor for gameplay and logic.
In the shot below, you can see the properties editor, with the "Scripts" tab selected. I moved the name and angle editor outside the tabbed panel, with the idea that these are so important they belong in the main window, but the real reason was to break up the boredom of a full-window tabbed panel. Under the
I made some changes to the design of the particle system. I am less concerned with the exact behavior of particles as they move around and move interested right now in building a system with good performance and deep physics interactions. Although I want particle behavior to be customizable, I don't think scripts are the right tool for the job. C++ plugins are better suited for this for two reasons.
C++ is much faster, and particles are a system that will make heavy use of that.
L
Here is a script for a first-person player. All of this is actually working now. It's very interesting that physics, rendering, culling, and Lua game code are all executing at the same time on different threads. CPU usage in a simple scene and some physics is about 35% on a quad core processor, which is good.
I think the most interesting thing here is that to break the kinematic joint used to control an object the player picks up, you simply set the variable to nil. However, I did run into
I'm taking a short break before I swap GPUs to fix that ATI shader error.
There are now 110 Leadwerks Engine 2.3 users. I did not think the number would be nearly that many.
I am most interested now in documentation, tutorials, and examples as well as improving existing features. With C++, it wasn't worth diving too deep into game tutorials, because only 40% of the programmers would find it useful. Furthermore, it is harder to design useful game components that are easy for users to lear
We have our design parameters. We know the editor should let the user control every aspect of the engine in a visual manner, without having to use any other tools or do any editing of text files. We have 3D World Studio to serve as inspiration for the design and feel of the program.
The sky's the limit. You, the users, have told me that you want to invest in a system that does more for you and makes your life easier. I'm happy to provide the basis for your next projects. Thank you for l
That was one crazy weekend! Things were hectic at times, but we managed to process all orders and get people started with Leadwerks for Android. Well, everyone except YouGroove. I've got to do some tests on a clean install of Windows, so I will figure out exactly what JRE to install, since that part can be confusing.
I uploaded new builds for Windows, Mac, and Android just now with performance improvements. Darkness Awaits is playable now on my Samsung Galaxy Tab 2, though I know I can
A beta of Leadwerks 3.4 is now available on the beta branch.
Texture lock rotation on brushes now fixed (really).
Vehicle orientation fixed (it was inverted on the Z axis).
Engine version incremented to 340.
Vehicle and water documentation is written. Here's a simple example on how to build a car:
http://www.leadwerks.com/werkspace/page/documentation/_/command-reference/vehicle/vehiclecreate-r861
We have about a week before this is released on the default branch. There wi
A few people have asked me about this, so now seems like a good time to talk about my experience with Mac computers. My first computer was actually an old Macintosh SE30, but of course in the 1990's Windows took over and I forgot about Mac. When I started developing Leadwerks3D I invested in a 27" iMac. It includes a 3.2 ghz quad core i3 CPU and an ATI Radeon 5750.
At the most minimal, the computer needs one cord for power, and that's it. The keyboard and mouse are wireless, and a built-
A new update is available. I believe this will fix any problems you may have previously experienced with the water rendering. If this is not the case, please let me know, preferably with a link to download your project.
Although Intel's new drivers work well, I have noticed that enabling, then disabling, then enabling water in the editor causes a crash. The crash occurs in the driver DLL and is not an OpenGL error. This will be reported to Intel. (It just occurs when a shader reads a de