Jump to content
  • entries
    941
  • comments
    5,894
  • views
    868,033

About this blog

Learn about game development technology

Entries in this blog

Too Cool

While working with zlib, I implemented the package system, and it turned out really cool. Here's some stuff you can do   First, let's load the package and register it in the file system: Package* pak = ReadPackage("mystuff.pak"); //Read the package RegisterPackage(pak); //Register package into file system Read a file from a package, just as if it were on the hard drive: Stream* stream = ReadFile("mystuff/new document.txt"); //Read a file straight out of the package! Write a file t

Josh

Josh

Summer Events

This blog is going to actually be about business rather than technology. Here's what's going to happen this summer:   First, we need to get this ATI driver bug fixed ASAP. Nothing else can happen until that gets fixed: http://www.leadwerks.com/werkspace/tracker/issue-165-terrain-textures-bug-radeon-hd-5850   The official documentation is coming along well, and I am really pleased with how this has turned out. (Thanks, Aggror!)   An updated evaluation kit with some limited programming w

Josh

Josh

A second look at entity scripts

With Luabind, it turns out we don't even need a table associated with an entity. We can just add values and functions straight to Lua's representation of that entity in the virtual machine! So instead of this: object.health=100 object.entity:SetPosition(1,2,3) You can just do this, which is much nicer!: entity.health=100 entity:SetPosition(1,2,3) So there's no object/actor nonsense, you just work directly with the entity itself.   Entity Keys The Get/SetKey convention from Lea

Josh

Josh

A first look at entity scripts

In Leadwerks Engine 3, you can load a script and attach it to any entity. You can attach multiple scripts to any entity, and they will be called in the order they were attached. Right now, I am calling the script-side table "actor" because it is a little more descriptive than "object" but I'm not sure about all the syntax yet. Below is a sample script for a sliding door. When you attach this to a model, the script will control its behavior: ----------------------------- -- Sliding door sc

Josh

Josh

Leadwerks dedicated server

We've transferred the site data to a dedicated server hosted with wiredtree. I've filed a ticket with invision power services to configure the new server. When that is confirmed to be working I'll retransfer the database to make sure all posts are saved and change the domain nameservers and A record.   I also have an update for the site skin that is supposed to fix most of the issues reported, but I want to make sure things are working right before installing it.   Then we'll get back to w

Josh

Josh

Louie, Lua

Below is raw output from the Lua debugger. It displays all variables, tables, and functions in the Lua script call stack. This will be displayed in a nice treeview interface that looks much better, but I found this terribly exciting.   You'll notice that tables don't get expanded, even though I have the ability to display all the values in a table. The reason they don't get expanded is because tables can contain tables, including tables that might be found elsewhere in the program. This ca

Josh

Josh

The Amazing Draggable Checkable Multiselectable Multidimensional TreeView with Icons

Last week I compiled the engine into a DLL and a static lib. That was pretty painless, and I have the project set up so it's easy to switch back and forth. I still haven't got Code::Blocks compiling right, which I will need for the Linux build. It can't seem to find any libs, but it's not too important yet.   After altering the behavior of the MaxGUI canvas slightly, I was able to load the engine DLL in BlitzMax and display 3D rendering on a windowed application. It's very easy to do this

Josh

Josh

iWerks

When I saw specs for the graphics card they are using in the new iMacs, I knew it was time for Leadwerks to come to Mac. Steam for Mac also recently came out, so the time seems right for Mac gaming. Of course, some guy blew up the Roseville Galleria, so the Apple store was closed. I ordered the 27" iMac with a 3.2 ghz dual core processor and upgraded the graphics card to an ATI 5750. Here's what they sent me: The computer case/monitor (it's all one piece) is a solid piece of aluminum that

Josh

Josh

Further down the rabbit::hole

Let's start with some code for making instances and unique copies of a material: Material* mat1 = new Material; mat1->SetColor(0,0,1,1); Material* mat2 = mat1->Copy(true); Material* mat3 = mat1->Copy(false); mat1->SetColor(1,0,0,1); mat1 and 2 will be red. mat3 will be blue. Shaders, textures, and entities work the same way.   Drawing commands are in. I like how OpenGL3 gets rid of all the built-in matrix stuff and just lets you deal with pure matrix multiplication. It

Josh

Josh

Out of OpenGL3Context

I spent a lot of time last weekend making sure resources are correctly shared between rendering contexts. It's surprising how many commercial games make you restart the game to switch graphics resolutions, and I find it annoying. Leadwerks Engine 3 uses a small hidden window with an OpenGL context to create the OpenGL 3.3 contexts, and it just stays open so there is always a persistent context with which resources are shared. Textures, shaders, and vertex buffers can all be shared between Ope

Josh

Josh

Model citizen

I can now load models in Leadwerks Engine 3 (as of this morning): Edit - Here's a demonstration of buffers working (as of this afternoon): Edit - And here's a comparison of a multisampled buffer next to a regular one (as of this evening): It's nice to see a feature in Leadwerks 3.0 that 2.0 doesn't have.   I'm getting my iMac this week. I'm going for the dual core 3.2 ghz with an upgrade to an ATI Radeon 5750. Mac is still using OpenGL 2.1, and I have no idea how good the drivers ar

Josh

Josh

Some sample LE3 code

Here's some LE3 code for a simple program. The Graphics / Window stuff is not worked out 100%, and it's a little tricky because of the different operating systems and different kinds of windows.   I think we'll see a little more consistency across various languages with the LE3 syntax. It was suggested that the C syntax use the following scheme: verb-class-noun SetEntityPosition() GetMaterialTexture() I agree with this suggestion.   SetGraphicsDriver( OpenGLGraphicsDriver() ); Cre

Josh

Josh

Textures in Leadwerks Engine 3

Textures in LE3 give you more control. You can retrieve all or part of any mipmap of a texture to system memory, edit the texture, then send it back to the GPU. Fortunately, the engine checks the bounds of the texture so you don't have to worry about producing any blue screens of death, as can happen when you're having too much fun with GPU memory.   Here's some simple code to retrieve the texture from video memory into a system memory bank, modify it, and send it back to the graphics card:

Josh

Josh

Move over, StarFox

I was determined to get 3D graphics working this week, and I did it. Behold, a box, now with *3D PERSPECTIVE*.   Making another variation of the infamous "my first box" demo with OpenGL is certainly nothing to brag about. However, there is quite a lot of code in use beyond just a simple hard-coded demo. The materials, shader, file system, camera, surface, graphics, math, and entity classes are all functioning at various levels of completion. I coded these systems and then used them to

Josh

Josh

Pump up the volumes

Shader class...done. Surface class...done (pretty much).   One change in LE3 is the addition of .shader files. This is just a text file with a list of shader components: vertsource="mesh.vert" fragsource="mesh.frag" Your material file then just has to reference a single file: shader="mesh.shader" Of course, you'll be able to just drag the shader file onto the material shader property in the editor to assign it. You will never have to use Notepad, for anything.   Now working on

Josh

Josh

Picking Up St(r)eam...

I'm making good progress on LE3 now. First I had to write basic functionality for things like strings and file access. It was tedious, but now that it's done I've got a nice library of functions that make programming all that much easier. The string commands include Trim(), Split(), ExtractExt(), StripDir(), etc. I know the Boost library has some functionality like this, but I'd like to avoid relying on third party libs whenever possible. I've also got the file system working, with a FileFa

Josh

Josh

Double rainbow all the way across the sky

Here is the amazing first shot of Leadwerks Engine 3. Behold not one, but TWO triangles! It's a dual display of isosceles inspiration.     Believe it or not, this screenshot actually demonstrates a feature that's new for LE3...hardware multisampling. Look carefully at the edges of the triangle:     This isn't the first time I've done multisampling, but until now it hasn't been possible to use with deferred rendering. It's now possible to combine these techniques with OpenGL4. You'

Josh

Josh

Week 3

The last two weeks were mostly me wrestling with C++. I had promising results with a meta language that translates to C++ and compiles, and also learned how to create makefiles as a result of that. I tried CodeLite and CodeBlocks, in addition to MS Visual Studio. I finally settled on CodeBlocks.   Codeblocks can be configured pretty easily to use GCC, the MS C++ compiler that Visual Studio uses, as well as about a dozen others (very curious to see if LE3 compiled with the Intel compiler is

Josh

Josh

Week 2

What an interesting first week. I compiled a C++ program for Android, made a programming language, learned about iPhone development, and figured out a lot of C++ stuff I did not know.   It's nice to see that a port to Android will work pretty much like I was hoping. I just write an abstract driver for every system, and have specific drivers that extends that class: class GraphicsDriver {} class GL4GraphicsDriver : public GraphicsDriver {}   Then when you have something like a surface tha

Josh

Josh

Friday

My little precompiler is going well. It creates makefiles and can split a build up across multiple files. I am working out the interface with external libraries. Here's an example program: Print "Hello World!" And here's the code it outputs and compiles: #include "Hello World.h" using namespace codewerks; //============================================= // Main Loop //============================================= int main(int argc, char* argv[]) { Print(std::string("Hello World!"));

Josh

Josh

Assets product section now open

We're finally offering our first product in the new assets section of the site. I have wanted for a long time to have a means where assets can be produced and sold in a sustainable manner. I am very interested in working with third-party sites that produce game artwork. Orders are still processed by hand, but we're working on a system to automate things. You can be sure I won't let anything into the product listing unless it is 100% game-ready for Leadwerks Engine.

Josh

Josh

Moving forward with Leadwerks Engine 2.4 and Leadwerks 3.0

I feel like you guys are owed an explanation of our long-term strategy, and now that I have definite plans I am happy to reveal them to you.   I've been spending a lot of time in the Silicon Valley area, and have learned a lot about business. We've been investigating external investment. I believe we could raise pretty much any amount of money we want, based on the fact we already have an existing business that is self-sustaining, and we have a great strategy. However, money does not necess

Josh

Josh

The Zone video (take 1)

I recorded some clips from Dave's latest version of his scene he is working on. Somehow he managed to get more detail and faster speed. The octree optimizations in version 2.32 help a lot here. The renderer is really good at dealing with lots of small objects strewn across a scene, even if it did take some trouble before we got it working completely right. So here's a short video we'll be using to showcase the capabilities of Leadwerks Engine:   Please share this on Facebook, Twitter, YouT

Josh

Josh

×
×
  • Create New...