Jump to content
  • entries
    943
  • comments
    5,899
  • views
    924,396

Pump up the volumes


Josh

2,562 views

 Share

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 "solids". This is based on my old CSG code from 3D World Studio. It's kind of nice that knowledge I developed a pretty long time ago is still so useful. Solids in the engine are a mathematical construct. They're basically a list of planes, with some extra fancy bits that do useful things like test if a point or ray intersects a solid convex volume. It can even detect the intersection of two convex volumes, which is some pretty advanced and fun geometry. Not 100% whether CSG modeling will be supported in the LE3 editor, but there is a pretty good case for it. I would probably program the more complicated CSG brush stuff in BlitzMax, and just convert it to a dumb mesh by the time it gets into the engine, for visible geometry.

 

Solids are used for the visible camera volume (frustum), and can also be used for invisible trigger volumes, blocks of water, etc. I am leaning towards allowing attachment of any number of solids to an entity, and then when the solid is entered by another entity, a Lua script function (or C callback [or both]) would be triggered. This allows you to attach multiple convex solids to an entity to form a concave shape, and the action can then be handled through the regular entity script system.

 

I haven't gotten into it yet, but the entity script system will allow any number of scripts to be attached to an entity, and they will be called in sequence. Special entities will have script functions available that have not existed before. For example, a particle emitter entity will have a script function EmitParticle() which allows you to control exactly where a newly emitted particle appears.

 

Well, writing code for invisible mathematical intersection tests isn't too exciting, but it formed a lot of the basis of LE2, and will for LE3 as well. Then it's on to the OpenGL camera class, so I can actually get some 3D graphics on the screen.

 

I'm mostly just retreading things I've already done right now, but having the code in C++ is good. It gives us cross-platform support for C++ programmers, the biggest segment of LE coders. It allows easier implementation of external libraries. Hiring outside help for some tasks is actually possible now. Finally, with a well-designed C++ core, it ensures we are forever moving forward, and not backing up and redoing things again. If I need to support the XBox or iPhone, that can be done without a massive rewrite or a new language. We learned a lot from LE2 about what works well and what can be improved. I am looking forward to a long and stable future using the LE3 engine design. I'd like to get into game production of our own titles as well, using LE3.

 

I'm enjoying Amnesia: The Dark Descent this week. All I need is an hour or two each week, so when I start a new game it usually takes a couple of months before I finish it. I also discovered the web series The Guild, and found it hilarious, although I am an outsider to the whole MMORPG thing. Maybe Felicia Day will make an episode about my life.

 

Well, I want to have something to show off for GDC 2011, so I'd better get back to work. Enjoy this episode of "Civil Protection". You can rarely go wrong with Half-Life 2 machinima:

 

 Share

6 Comments


Recommended Comments

Using voxels you wouldn't need much math at all. Subtract and add any 2 or more voxel clouds, and then transform the result to polygons. It would make also 3D textures possible, which you can't do with conventional polygon based CSG.

Link to comment

This is great news! LE3 is looking to be very powerful.

 

About script callbacks, all I can say is make lots of them for many different events. Just because you might not be able to see why a specific event shouldn't have a callback doesn't mean someone else won't have a reason for it.

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...