Jump to content
  • entries
    941
  • comments
    5,894
  • views
    871,809

About this blog

Learn about game development technology

Entries in this blog

Last Call for API Modifications

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

Josh

Josh in Articles

Beta update available

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.

Josh

Josh

Happy Halloween!

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.  

Josh

Josh

Android File System

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

Josh

Josh

Ambient Light Research Pt 2

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

Josh

Josh

GLTF Loading Speed

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

Josh

Josh

Game Launcher Review

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

Josh

Josh

Buffers in Vulkan

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

Josh

Josh

Artwork production

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

Josh

Josh

How I turned my 3D game into a VR game with eight lines of code

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

Josh

Josh

Multi-monitor Support

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

Josh

Josh

Resolution Independence

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

Josh

Josh

Siggraph Contest

This might be worth submitting a demo to: http://www.siggraph.org/s2010/for_submitters/live_real-time_demos

Josh

Josh

Beta update available

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

Josh

Josh

More lighting improvements

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

Josh

Josh

August 13, 2011

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

Josh

Josh

Particle Physics

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

Josh

Josh

Sample FPS Player Script in New Engine

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

Josh

Josh

The Day After

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

Josh

Josh

And now the fun begins

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

Josh

Josh

Optimization

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

Josh

Josh

Leadwerks 3.4 beta now available

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

Josh

Josh

Should you get a Mac?

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-

Josh

Josh

Water Update [beta]

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

Josh

Josh

×
×
  • Create New...