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
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/
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
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
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
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
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
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.
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
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...
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:
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
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->
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
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
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
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
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
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
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
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
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
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