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

About this blog

Learn about game development technology

Entries in this blog

Leadwerks Articles

The articles database makes a triumphant return with a beautiful new template: http://www.leadwerks...e/page/articles   The front page shows the most recent articles. Clicking on a category on the right gives you the entire list of articles for that category: http://www.leadwerks...s/_/programming   The new template I designed will help organize and present articles better. There's some great content written by the community, but I haven't provided a very clear specification for the arti

Josh

Josh

Madness? THIS - IS - MOBILE!!!

I apologize preemptively for the title.   So I picked up a Samsung Galaxy Tab today, for testing...yeah, that's it, "testing"...   I installed the USB driver for Windows, restarted my computer, and was able to start debugging Leadwerks3D on it with no trouble at all. However, the rendering showed black objects that ought not be black.   At this point in the game, having such a basic issue is very scary to me. I tracked the problem down to the lighting uniforms being passed to the sha

Josh

Josh

No SOPA

As the founder of Leadwerks Software, software piracy is an issue that has directly affected my income. We solved the piracy problem by turning our product into a service. Only paid customers can access our community website and get full use of our product. Piracy rates dropped to virtually zero after that. I consider our piracy problem totally solved. The marketplace changed, we adapted to provide a better service, and overall both the customers and company are better off than before.   Netf

Josh

Josh

S-M-R-T

I've made more progress on the model editor. I needed it to be able to resave models after making changes. First, I started with an Entity::Save function that would save all entities in the GMF format. "But wait", I thought, "I can save all entities in the GMF format!" Then I thought, even better, I can simply write a Serialize() virtual class function in the base object and extend it for each class, so that instead of writing this: stream->WriteFloat(position.x); stream->WriteFloa

Josh

Josh

Model Editor

When you double-click a model file in the asset browser, it's opened up in the model editor window within Leadwerks3D. You can drag materials onto a model to assign them, then just save the model and close the window. You can also drag textures straight onto the model, and Leadwerks3D will do a pretty good job of guessing what material to use. If no material exists, it will create one, and take a good guess at what textures should be added to it, then apply the newly created material to the m

Josh

Josh

Back to the Art Pipeline

It's pretty amazing how long the materials, textures, and shader system is taking, but it encompasses a lot of areas: Automatic asset reloading, autogenerated shaders, GLSL syntax highlighting, texture conversion options, and more. All this attention to detail is shaping up to create what I hope will be the best art pipeline, ever.   The Asset Browser displays all files in your project directory. You don't have to use Windows Explorer at all anymore. You can rename, move, copy, cut, paste,

Josh

Josh

Project Management

Leadwerks3D has built-in project management features that assist the user to create, share, and publish projects. When you first start editor for the first time, the New Project wizard is displayed. You can select a programming language and choose which platforms you want the project to support. It is possible to add project templates for new languages, too.   Once a project exists, you can go into the project manager and switch projects. This will cause the editor to use the project dir

Josh

Josh

Over the Hump

All difficult technical challenges for the completion of Leadwerks3D are solved. This includes navmesh pathfinding, cross-platform support, Lua and C# integration, OpenGLES rendering, the abstract driver model, etc., etc., etc. Basically, all the scary stuff is done, and the only thing that remains is hard work. I'll be turning my attention back to the editor shortly, but first I wanted to address a different kind of challenge: Documentation and the website.   The present appearance of the

Josh

Josh

Should you get a Mac?

A few people have asked me about this, so now seems like a good time to talk about my experience with Mac computers. My first computer was actually an old Macintosh SE30, but of course in the 1990's Windows took over and I forgot about Mac. When I started developing Leadwerks3D I invested in a 27" iMac. It includes a 3.2 ghz quad core i3 CPU and an ATI Radeon 5750.   At the most minimal, the computer needs one cord for power, and that's it. The keyboard and mouse are wireless, and a built-

Josh

Josh

Why Small Companies Succeed

The development of Leadwerks3D seemed like an impossible task at first. Not only did I need to write a new 3D engine entirely in C++ mostly by myself, but I had to make it run on four platforms (Android, iOS, Windows, and Mac), with a scalability all the way from the fixed-function pipeline up to the very latest hardware tessellation features. All logical sense told me this was impossible. Even large companies with 100 programmers or more haven't yet been able to put out a 3D engine with the

Josh

Josh

Android Guts

I spent most of today getting the Android library more polished, especially when handling application switching. It's a little tricky because Android doesn't automatically manage your sound channels and OpenGL resources, so these need to be reloaded when an app regains focus. Here's a video, which I obviously had way too much fun with in iMovie:

Josh

Josh

An Eventful Weekend

The windows class on OSX has been a bit neglected, so i spent some time getting it ready for the final release. Creating a full-screen window on Mac is a little funny. There's a fullscreen mode that's been around a while, but it locks the system so that CMD+TAB doesn't work. That means if your application crashes, or you don't program it to close with the escape key, you'll be stuck in fullscreen mode, with no way out but a computer restart!   You can create a window on top of everything e

Josh

Josh

Friday, November 18

Well, we're through the "OMG will this even work" phase. Aria got FreeType to build on all platforms, so you can load TTF files directly on Windows, Mac, Android, and iOS devices. I set up the accelerometer input on iOS today, so you can call Device::GetAcceleration() and retrieve a Vec3 telling you which way is down. Acceleration is returned relative to the screen orientation, so you don't have to worry about which way the device is rotated. This isn't my proudest screenshot, but it demonst

Josh

Josh

Odds and Ends

I implemented direct WAV file loading, and will add OGG as well. The MP3 file format has licensing issues, and we are not going to support it. However, if you use a third-party MP3 converter, the editor will detect whatever converters you add and use them (see more below). We're using OpenAL for sound, but have a more in-depth implementation than in the past. Sound source management is important because you only get so many sound channels on most cards, and this is handled automatically, bas

Josh

Josh

Three's a Crowd

Crowd navigation is built into Leadwerks3D. You just set a destination, and your characters will automatically travel wherever you tell them to go. I think having navigation built into the engine will give us better results than a third party add-on would. We can automatically recalculate sections of the map that change, AI script functions can be called when certain events occur, and the code to control characters is extremely simple.  

Josh

Josh

Collision Decisions

As I was implementing the collision commands for Leadwerks3D, I noticed a few things that illustrate the differences between the design philosophies of Leadwerks Engine and Leadwerks3D.   You'll easily recognize the new collision commands, although they have been named in a more verbose but logical manner: void ClearCollisionResponses(); void SetCollisionResponse(const int& collisiontype0, const int& collisiontype1, const int& response); int GetCollisionResponse(const int& c

Josh

Josh

Happy Halloween!

Happy Halloween! The free Justine add-on for Amnesia: The Dark Descent is available. Just don't get too scared! B)   Leave a comment telling us how you are celebrating Halloween this year.  

Josh

Josh

Alles Gute

The Leadwerks.com server started acting up earlier today, and I had no idea why. Database errors were occurring, and I had not made any changes to the site. I called our server site in Chicago. First they restored the full site from a backup from 2 A.M. yesterday morning. The matter was still not solved, though. A couple hours later, they determined that an automatic CPanel upgrade had caused PHP extensions to be loaded multiple times. This was fixed, and now we are back to normal. If you

Josh

Josh

Where Angels Fear to Thread

Leadwerks Engine 2 is single-threaded. The engine performs one task at a time. The engine updates physics, then performs some other tasks, then renders the scene, waiting until each task if finished before moving onto the next one:   I have experience programming threads in BlitzMax, and it works pretty much the same way in C++. Leadwerks3D is taking full advantage of threads and multicore CPUs, splitting off any expensive tasks that can be run on separate threads.   Multithread program

Josh

Josh

Field Trip

I was at a shopping center this afternoon wasting time, and came across a hobby shop. I can't quite articulate what it is about stuff like this that I like, but this is what I want game development with Leadwerks3D to be like. This is why I set up the Leadwerks Asset Store and make the effort to make nice thumbnails with transparency to show off items in 3D. I want more game development to be a process of producing reusable components, and then at the design level, of picking and choosing whi

Josh

Josh

Apple and Leadwerks

I was thinking this morning how Apple has influenced my life and the company Leadwerks. You might ask why I am talking about this, since we are only now coming out with our first product for any Apple operating system. Well, before Windows existed, back in the 1980's, this was my first computer:     The first "game" I ever made was in Macintosh Paint. I drew a road from a top-down view, with barriers randomly placed on either side. I drew a race car, zoomed in the image, and used the se

Josh

Josh

"Finding" a "Path"...Get it? Wait a minute...

So after about three weeks of pain and frustration, I have successfully calculated my first path using Recast navigation. This has been a new experience for me. I've implemented half a dozen low-level C++ libraries, and never had any serious trouble, but Recast Navigation is something else.   The technology underlying Recast is impressive. First they take triangle geometry, convert it to voxels, then calculate navigation, and convert it back into rough polygons. You can read about the proc

Josh

Josh

Navigation Win

I fixed our AI navigation problems and got pathfinding to work using navmeshes. Now you can easily make a horde of zombies chase after the player without setting up any waypoints. Which is the whole point of this, of course.   The problem had to do with a polygon filter, and I am still not sure what is going on, so I disabled it for now.  

Josh

Josh

Artificial Stupidity

I'm testing the Leadwerks3D AI navigation and getting some interesting results. I'm not sure why it's acting this way, but we'll get it figured out soon. It seems like the navigation gets "stuck" on corners, fails to enter some tiles, and likes to take the scenic route to some destinations. B)  

Josh

Josh

Android Progress

I got touch input and text rendering working on Android. Happily, I have not encountered any issues with different behavior on any tested OpenGLES devices, including iOS. The framerate on my HTC Evo jumps around quite a bit, which appears to be an issue with the Java garbage collector. Framerate on iOS is a solid 60 FPS, so we should be able to get this sorted out.   Here's a video: http://www.leadwerks.com/werkspace/page/videos/_/leadwerks-engine-3/android-progress-r100   I also discover

Josh

Josh

×
×
  • Create New...