Jump to content
  • entries
    941
  • comments
    5,894
  • views
    870,289

About this blog

Learn about game development technology

Entries in this blog

Clearing up Baggage

In this non-technical blog I will give you more of Josh's useful tips on how to live. In this blog I am talking about baggage, in the form of data physical possessions.   Archive and Delete The first thing you need to do is organize. If you have all your files in dozens of different folders all over your computer, it will be very difficult to track them all down. This is why Leadwerks and most other programs store files in your Documents folder on your computer. Leadwerks projects, along

Josh

Josh

Cleaning up physics shapes

Before Leadwerks 3 existed, Leadwerks 2 used a little tool called "Phygen" to generate collision shape files for 3D models:     The user would input the parameters and then save that file with the same name as the model it was to be associated with, with the PHY file extension. This was not a very good system, but the idea of storing a physics shape in a PHY file that was automatically loaded along with the model was a good one.   In Leadwerks 3 we implemented prefabs to make it easier t

Josh

Josh

Character Sketches

The first step to building a character model is to establish the concept. Here are the images I have received. I have my favorite in mind, but what do you think? The purpose of this character is to serve as an enemy for a wide range of games. It could also be used as a main character with a third-person camera.   Which one do you like best?  

Josh

Josh

Character Physics Improvements

I update to latest version of Newton and did a lot of work on character physics. All collisions below the step height will now be ignored, regardless of incline. Character collision in general is much more stable and accurate. Terrain collisions now work properly. Character collisions using an adaptive method that will be much faster overall.   Opt into the beta branch on Steam to get the update. If you're using Lua, be sure to update your project to get the latest EXEs.

Josh

Josh

Character Matters

I'm pleased to say our very first character pack DLC is now available on Steam.     Originally, my plan was to just license third-party model packs and sell them on Steam, ready-to-use with Leadwerks. However, once I started acquiring content I ran into some problems. The selection of usable character packs out there are pretty lacking, when you start examining them closely. Artists often just wanted to sell "raw models" and were not interested in the final steps to make an item truly

Josh

Josh

Change Map Example Added

A new map called "09-Change Map.map" has been added to the example game. This demonstrates how to use the new TriggerChangeMap.lua script to make your player progress from one level to the next.   In order to use this script, you must update your project with the new executables. Select the File > Project Manager menu to open the Project Manager, then press the "Update" button to update your project.   A new chunk of code has been added to App.lua to handle map changes. This code will

Josh

Josh

Carve, hollow, and cleaning up the scene tree

CSG carving now works very nicely. The hardest part was making it work with the undo system, which was a fairly complicated problem. It gets particularly difficult when brushes are in the scene hierarchy as a parent of something or a child of something else. Carving involves the deletion of the original object and creation of new ones, so it is very hard to describe in a step-wise process for the undo system, especially when all manner of objects can be intermixed with the brush hierarchy.  

Josh

Josh

Calling on the Leadwerks Community

Christmas is the season for giving, and it also happens to be my biggest sales time of the year. The Steam Winter Sale just kicked off and I need help getting us up on the first page of top sellers: http://store.steampowered.com/tag/en/Game%20Development/#p=0&tab=TopSellers   How do we do that? We drive web traffic to the Leadwerks Steam Store page. Here's a simple way to do it. If you could "Share" this Facebook post with your Facebook account, I would appreciate it: https://www.fac

Josh

Josh

C++11 for Linux

The beta branch now contains an update that adds C++11 support for GCC on Linux. To use this you must enable C++11 support in the compiler settings in Code::Blocks. Select the Settings > Compiler and Debugger... menu item and then check the box indicated below.     All new projects created from the Leadwerks templates will work correctly out-of-the-box.   Your existing projects need a couple of new libraries added to them. The easiest way to do this is to open the CBP project file i

Josh

Josh

Built-in Shaders

In Leadwerks, required files were always a slightly awkward issue. The engine requires a BFN texture and a folder of shaders, in order to display anything. One of my goals is to make the Ultra Engine editor flexible enough to work with any game. It should be able to load the folder of an existing game, even if it doesn't use Ultra Engine, and display all the models and scenes with some accuracy. Of course the Quake game directory isn't going to include a bunch of Ultra Engine shaders, so what to

Josh

Josh in Articles

Building Universal Game Assets

I have two goals for the art pipeline in the new game engine. Eliminate one-way 3D model conversions. Use the same game asset files on all platforms. In Leadwerks, 3D models get converted into the proprietary MDL format. Although the format is pretty straightforward and simple, there is no widespread support for loading it back into 3D modeling programs. This means you need to keep a copy of your 3D model in FBX and MDL format. You may possibly want to keep an additional fi

Josh

Josh in Articles

Building Turret AI: Part 2

I've expanded the turret AI to include a visibility test. This is performed initially when selecting a target, and is also performed on a continuous basis to make sure the target stays in view. To avoid overloading the engine I am only performing the visibility test at most once every 500 milliseconds. This provides near-instantaneous updating while preventing the picking from becoming a bottleneck and slowing down performance.   Adding bullets was mostly a copy and paste job from the Soldi

Josh

Josh

Building the Turret AI

In this series of blogs I am going to describe my implementation of AI for a new Workshop Store model, the Leadwerks turret. The model is shown below, without the weapon inserted.     Before writing any code I first decided the main behaviors I wanted this script to involve. The turret should scan the area to identify an enemy (using the team ID to differentiate between enemy types) and choose the closest target. Unlike the soldier AI, the turret AI will not change targets when another

Josh

Josh

Building the Soldier AI

I recently added a new "SoldierAI" script to handle enemies that can shoot back and coordinate with one another. This was developed for the new Mercenary Action Figure. In this blog I will explain how I designed the behaviors to work.   Just like the MonsterAI script, the soldier AI script includes a "teamid" value. This has three possible values, "good", "bad", and "neutral". Good guys and bad guys will attack each other, but not their own team or neutral characters.     At its simpl

Josh

Josh

Building the game launcher user base

We've now got 40 games in Leadwerks Game Launcher and I am giving serious thought to the final launch. The application is presently in early release mode with about 2500 users. We want that number to be 100,000 users. Leadwerks Game Launcher is a really unique application; it's distributed exclusively through Steam, it's a standalone app, and it's free. This is not really like anything else out there, so how do you most effectively promote it?   I am running an experiment with Facebook ads

Josh

Josh

Building Textures in Leadwerks Game Engine 5

The new engine features advanced image and texture manipulation commands that allow a much deeper level of control than the mostly automated pipeline in Leadwerks Game Engine 4. This article is a deep dive into the new image and texture system, showing how to load, modify, and save textures in a variety of file formats and compression modes. Texture creation has been finalized. Here is the command: shared_ptr<Texture> CreateTexture(const TextureType type, const int width, const in

Josh

Josh

Building maps with modular props

The beta branch on Steam is updated with a new build. Fixes and Enhancements The camera movement options have been made more sane. The range of possible values is a little more practical now. A mouse smoothing option has been added that makes the camera motion in the perspective viewport feel a lot more smooth and natural. I also found a bug that caused the camera move speed to change when a map was loaded. It was an annoyance that was almost unnoticeable but it feels much better now.  T

Josh

Josh

Building Deployable Projects

It's quite a challenge to get something semi-deployable to work on four platforms. I never intended to become an expert on the subject, but here are some of the interesting things I have picked up recently.   Code generation mode in Visual Studio By default, Visual Studio builds programs in debug mode that won't run on consumer's machines. Fix it by changing the code generation mode: http://www.leadwerks...grams-cant-run/   Static Libraries in Xcode Xcode has no "exclude from build" opt

Josh

Josh

Building Character

My goal with Leadwerks 3 has always been to give the people what they need to make playable games. What they really need. Creative projects are interesting because it's easy to get derailed. You can lose interest in an idea, or you might avoid a critical problem you don't know how to solve, and instead spend time doing fun little things that make you feel like you're making progress when you're not. For example, let's say I am making a dungeon crawler. I have some basic gameplay but I can't

Josh

Josh

Building a Zero-Overhead Renderer

The Leadwerks 4 renderer was built for maximum flexibility. The Leadwerks 5 renderer is being built first and foremost for great graphics with maximum speed. This is the fundamental difference between the two designs. VR is the main driving force for this direction, but all games will benefit. Multithreaded Design Leadwerks 4 does make use of multithreading in some places but it is fairly simplistic. In Leadwerks 5 the entire architecture is based around separate threads, which is chal

Josh

Josh

Building a Steam Purchase Server

One of my main goals in 2016 is to build a built-in store for Leadwerks users to buy and sell 3D models and other items through Steam. It took me a while to understand how this works: The client (Leadwerks Editor) sends a message to the Leadwerks.com server requesting that a purchase be made. The Leadwerks.com server sends a message to the Steam server requesting that a purchase be initialized. Steam displays a dialog to confirm the transaction in Leadwerks Editor. The Steam server r

Josh

Josh

Building a single-file 4K HDR skybox with BC6 compression

HDR skyboxes are important in PBR rendering because sky reflections get dampened by surface color. It's not really for the sky itself, but rather we don't want bright reflections to get clamped and washed out, so we need colors that go beyond the visible range of 0-1. Polyhaven has a large collection of free photo-based HDR environments, but they are all stored in EXR format as sphere maps. What we want are cubemaps stored in a single DDS file, preferably using texture compression. We'

Josh

Josh in Articles

Building a recursive file system watcher for Linux

Following my previous update about correcting file path cases, I am now able to load all our maps in Leadwerks. The power of this tool running natively on Linux is starting to show:     The next step is to implement a file system watcher to detect file changes. Leadwerks automatically monitors the current project directory, and will reload assets whenever the file changes. This allows you to keep an image open in an image editor like GIMP, and any time you save your changes will be refle

Josh

Josh

Building a Collaborative Content Production Pipeline - Part Two

Previously, I described the goals and philosophy that were guiding my design of our implementation of the Leadwerks Workshop on Steam. To review, the goals were: 1. Frictionless sharing of items within the community. 2. Protection of intellectual property rights. 3. Tracking of the chain-of-authorship and support for derivative works.   In this update I will talk more specifically about how our implementation meets these goals.   Our implementation of the Steam Workshop allows Leadwerks

Josh

Josh

×
×
  • Create New...