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

About this blog

Learn about game development technology

Entries in this blog

Editor Documentation

I got the editor documentation written pretty quickly. It was hard to start, but once I figured out how I wanted to lay out the information, it all started flowing pretty easily.   Documentation in Leadwerks Engine 2 was a weakness, especially in stuff other than the programming reference. This is unfortunate, because I have come to see documentation as the final product. Everything in the development cycle leads up to the ability to write good documentation.   Good documentation starts w

Josh

Josh

Day 877

Development of Leadwerks 3 was (theoretically) completed today. We still have a lot of testing and bug hunting to do, but all features for release are written.   This is where it started: http://www.leadwerks.com/werkspace/blog/1/entry-500-day-1/

Josh

Josh

Day 1

Production of Leadwerks 3 begins today!

Josh

Josh

One Last Thing

In this blog I'm going to explain the evolution of the entity and physics system in Leadwerks 3.   In Leadwerks Engine 2, physics bodies and character controllers are both separate entity classes. If you want a model to be physically interactive, you parent it to a body entity. If you want a model to walk around with physics, you parent it to a character controller body.   In Leadwerks 3 I decided to give physics properties to all entities. This means all entities can use commands like Ge

Josh

Josh

Happy New Year

Today I added the visible guides in the editor for point and spot lights. I also tested out the new FBX converter, recompiled with the 2012 FBX SDK. It works. (There are no file format changes in the 2013 FBX SDK, so this will load everything.) Our character models still have to be rescaled, so I added a resize option in the model editor. That way models can be resized and the model file saved, so you don't have to rescale a model every single time you place it in the editor. Having models

Josh

Josh

Docs

I spent the day manually setting entry categories in the new documentation database. This was needed to make the docs actually use the nice breadcrumb bar in the website header. Our content management system doesn't exactly support hierarchical pages, so some clever PHP scripting was used to make it work. The whole point is simply to make navigation easier, and it works well. I also wrote some PHP code that does a search and replace with class names, so class names are always links to the pa

Josh

Josh

Ubuntu is probably the future of PC gaming

Here's something I've been thinking about. What do you think?   Apple Locking down OSX. No optical drive. The Mac software shelf at Fry's is now obsolete. Mac App Store. Gatekeeper only allows "signed" applications, by default. [*]Miniaturization of computer hardware, at the cost of graphical performance. [*]Move to non-upgradable hardware (glued-in memory). [*]Moving away from file system access (iCloud). [*]Hardware is expensive, and will always be a luxury item.   W

Josh

Josh

Merry Christmas, and a look at our new headquarters

I hope everyone is having an awesome Christmas week. I'm taking a break from coding to show you our new office we moved into in November at the Sacramento Hacker Lab.   All decked out for Christmas:   Chris is pretending to work, but he's not fooling me:   So we changed the arrangement to make a reverse mullet. (Party in the front, business in the back):   The kitchen provides energy, both in the form of food and alcohol:   The common area:   The room-temperature beer flo

Josh

Josh

Progress

Here's my list of things left to do: Documentation Undo system Get character models for Darkness Awaits Prepare the super secret special surprise for deployment   Undo functionality is my absolute least favorite thing to program, and I also want to get some more real-world testing done before implementing it, so it comes last. This evening I will start on the docs, in earnest.   I hope everyone is having a good near-Christmas week.

Josh

Josh

Import Model Scaling

I got tired of rescaling some models every time I created a new instance of them in the Leadwerks 3 editor, so I added an option to resize the model file itself to the proper dimensions. Double-click the model thumbnail in the asset browser to open it in the model editor. Then select the Tools > Resize menu item. The Resize Model dialog will appear with options to scale by a percentage, or fit to a specific size. For convenience, you can choose the units to use, including centimeters, met

Josh

Josh

Last Minute Improvements

We decided to make one last minute change to the material editor. The texture list is a bit easier to work with now:   Looking pretty nice on Mac, too:   We're also working on our character models for Darkness Awaits, as well as a super secret special surprise...

Josh

Josh

What light through yonder Windows breaks?

This is the final output of Leadwerks 3 on Windows.   When you choose "Windows" in the Publish dialog, a few options appear. Press OK and your game's installer is created.   The installer looks like this. You can replace the installer images with your own if you like:

Josh

Josh

From concept to final product

I'm working on project creation, management, and publishing right now. This is necessary because it automates some steps that would otherwise be very time-consuming.   When you create a project, you can choose the language and the platforms you want it to run on:   You can switch between projects to reload all assets and change the working directory:   You can export a project into a zip file, give it to someone else, and they can easily import it back from the zip, and have it availa

Josh

Josh

Model Tools

I've never coded much polygonal modeling routines, instead focusing on constructive solid geometry. I wanted to include some tools for modifying surface normals and texture coordinates. I came up with a normal calculation routine that actually uses four different algorithms, depending on the settings specified.   One thing I learned right away is you want to do away with n*n routines. That is, NEVER do this: for (i=0; i<surface->CountVertices(); i++) { for (n=0; n<surface->

Josh

Josh

Darkness Awaits

Leadwerks3D will ship with a finished game demo to demonstrate how to use the software. Darkness Awaits is a third-person dungeon explorer with a 45 degree view. It's like a cross between Diablo and Legend of Zelda: A Link to the Past. This is an idea I had back in my very early days of game development, before I even learned to program. This was originally done in the Quake 1 engine. It didn't really go anywhere, but what we had was awesome. You could run around and shoot skeletons with f

Josh

Josh

iOS 6 Blues

Apple's problems in iOS 6 aren't limited to maps. Their OpenGL drivers in iOS 6 are absolutely non-functional.   First I was experiencing a BAD_EXC_ACCESS error when rendering certain surfaces. Feedback on the Apple dev forum suggests I am not alone in this. I took a guess and switched my position vertex buffers to use vec4s instead of vec3s, and it appears to have solved that problem (even though both should be fine).   Second, all 3D objects just stopped appearing, completely. I've deb

Josh

Josh

Not So Fast

In my previous blog I talked about the Android file system and APK package system. The end result was I copied all the project assets into the res/raw folder. However, I learned two additional things that changed my plan a little: Android files can only be lower-case. Any folders in the res/raw folder will not get copied...it just packs in the files in that directory, with no sub-directories! That's a big problem if we want Leadwerks to be able to load files the same on each operati

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

Left 2 Do

Here's my list, as it stands today: Lua Interpreter project for iOS and Android (iOS is done, Aria is working on Android) Improve flowgraph visual style (will finish today, probably) Documentation (Chris is filling out the syntax, then I will go in and write descriptions) Brush rendering batches (to make editor rendering faster) Brush collapse on load (in engine only) Undo system

Josh

Josh

How to be a great programmer (or whatever)

I am going to share my tips on how to be a great programmer, or anything else for that matter.   The first thing you need to do every day is eat properly. I recommend the following:   Breakfast 2 pieces of toast (whole wheat bread, the heavier the better). One banana or orange. Finally, eat pure egg whites until you can't eat anything more. They have no cholesterol, no fat, they are pure protein, and they will give you tons of energy. Lunch Get a deli sandwich. Chicken, tur

Josh

Josh

Halloween Horrors with Objective-C

It's November 1, and this is the longest summer I can remember in a while. Jokes about the seasons aside, last week I had trouble deciding what to do first, so I decided to attack the remaining tasks I was most scared of. This has been my strategy throughout the entire process, and it results in my work becoming progressively easier as we near the finish line.   I finished one big task today that was holding us back. We need a file system watcher for Mac computers to detect changes to the f

Josh

Josh

A Red-Letter Day

No matter what, tomorrow is a big day for the tech industry. What do you think will happen? http://windows.microsoft.com/en-US/windows-8  

Josh

Josh

One of the weirdest bugs of my life

So inexplicably, two days ago animation stopped working on all my Mac machines. I checked out the graphics module, looked in the surface class, the animation routine, and couldn't fine anything wrong. The same code ran fine on Windows, and all the animation is on the CPU, anyways, so it couldn't be a graphics issue.   I noticed if I explicitly set the frame number instead of using the time as the frame, it worked fine. So I start printing out the frame number in the animation routine. The

Josh

Josh

Preparing C++ Projects

I've been doing a lot to create the final Leadwerks projects to build static libraries, and the corresponding Visual Studio, Xcode, and Eclipse projects to load those libraries and start coding with Leadwerks 3 in C++. We're also making progress with our sample game "Darkness Awaits". The community came up with an awesome logo for the game that captures the spirit and feel of the original concept, which first formed as a mod for the original Quake engine. I uploaded gamecreator's Photoshop fi

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

×
×
  • Create New...