About: This is a short series for the Leadwerks community on the process of creating a simple game using procedural content.
A short while ago I was approached to write a book on terrain generation using dedicated tools for a variety of game engines. There's a lot more to game content than just terrains. Josh's recent blogs on CSG got me thinking about one of my favourite games and had me itching to re-visit the genre.
This series is an exploration of topics I don't normally exerci
Anyone who peruses the forums regularly might have noticed a fresh new intern posting a particle system feature request thread. That intern, who shall remain nameless, was ready to tackle the task of aiding in the creation of a rich particle system that was both powerful and intuitive to users. That was over a month ago… in that time I have been sidetracked with other more important and pertinent tasks but I’m proud to finally admit that the “Super Awesome Chris Particle System of Awesomeness +3
I like reading blogs and Josh has been the only one spamming them recently (j/k I know we all love hearing about LE3) so I figure other people like reading blogs too. So I thought why not make one about what I'm working on.
Over the last month or so I had pathfinding working using basically a 2D grid over a terrain using A*. Being able to move actors around like that just feels so inspiring and feels like the sky is the limit which what you can do with that. I had so much fun with just that
CSG is a great way to quickly and easily produce levels, and the editor is even fun to write. I added another tab next to the scene and project tabs where you can select objects to create. The CSG texture mapping and smoothing controls also reside on this panel. I'm still playing around with the layout, but here is what I have now:
CSG brushes are now entities, and can be arranged in a hierarchy. Check out the scene hierarchy that gets created when you create a compound brush object (a
The new CSG editor is coming along nicely. Yesterday I implemented CSG rotation and skewing, and today I got object center and edge selection working. 3D World Studio uses GL_SELECT mode to handle picking in orthographic viewports, but this stopped being supported in ATI drivers a few years ago! I implemented a CPU math routine for picking brush edges. In orthographics viewports, brushes can be selected by clicking their center or any edge, while models only use the center for selection. (T
Building selection
A little update on the building placement. You can scroll with your mousewheel to select a different tower.
I made the following code to cycle through the towers:
//Mouse wheel checking
m = LE.MouseZ();
if (prevM < m)
{
selectionID++;
if (selectionID > 4)
{
selectionID = 0;
Console.WriteLine("now 0");
}
SetNewCurrentTempTower();
}
else if (prevM > m)
{
selectionID--;
if (selectionID < 0)
{
selectionID = 4;
C
Today I implemented the last two compound primitives. Tubes are the same as in 3D World Studio, with parameters for the number of segments and thickness. Since the Leadwerks3D editor supports smooth groups, another new compound primitive has been added. A torus is a "donut" shape. These can be used to make curved pipes and other things. Here are the two compound primitives, side by side:
Smooth groups and new primitives in Leadwerks3D allow you to create new kinds of geometry which we
Since brushes in Leadwerks3D are entities, and the Leadwerks3D editor gives you access to the entity hierarchy throughout a scene, we don't use "groups" like 3D World Studio had. Instead, when a compound brush is created, a parent pivot is created, and all brush segments are made a child of that. When you select any part of the hierarchy, the entire compound brush is selected (unless "Ignore Hierarchy" is turned on).
Since brushes can now have a 4x4 matrix, which wasn't the case in the pas
The last day of the season was today, so I was at North Star. We had a storm for the last three days, so the snow was pretty good, just sticky in some places. Even though it was a Sunday, crowds were not bad. Towards the end of the day, most people were hanging out at the lodge and the runs were completely empty. All in all, it was a pretty awesome day.
Smoothing groups are one of the most frequently requested features for 3D World Studio, so I am happy to show you their implementation in Leadwerks3D, finally. Smoothing groups are usually stored as a bitwise flag. When two faces share a vertex at a certain position, if they have one or more smoothing groups in common, their vertex normal is calculated as if they are sharing a vertex.
I first attempted to write an algorithm based on edges, which worked great for cylinders but failed for ge
There are two types of days here at Leadwerks; days that we work and those that we werk. On werk days we hunker down at our desks, cups of caffeine in hand, and code (Unless you’re thinking… or pretending to think). Then there are work days, on these days we focus on business development: researching, planning, and occasionally field trips. So to kick off our intern hunt members of Leadwerks grabbed their sack lunches, kissed their monitors farewell, and ventured over to the Sacramento State Uni
I have had quite an incredible journey with games. I'll start from the start. I have always been facinated with games and how they worked. Not just the graphics, but how smoothly the game mechanics worked. And I started with my friend showing me a game called Garry's Mod.
Now I had played my way around a few games before, but none quite measured up like Garry's Mod.
And that was just when the custom content and weapons were being first made, and so I got on board with Lua. It was real simpl
It has been a month since I started with Leadwerks. It was also the best month since I started game development. I made bigger and better things with Leadwerks in one month then I had with all the other engines I have used for the last couple years.
Part of this is experience. If you can learn one engine, it makes learning another one much much easier. However, a large part of this the one simple fact that Leadwerks excels at doing things the best and most simplest way.
Anyway, I thought
After a few of weeks of programming burnout I am now back in action. i think I was starting to feel a bit swamped with the increasing complexity of my project amongst other things however things are looking a bit rosier now. I probably should have sat down and made a proper plan because of all the dependencies of the various elements.
My history with Leadwerks has been somewhat chequered and I have struggled for along time trying to do stuff with it in the past. However lately things just se
The subject of spheres in 3D World Studio has been one of great levity (see here and here) around the Leadwerks community. I spent today finally implementing a CSG sphere primitive. This is a little different from creating a conventional triangle mesh sphere because each face is a single polygon with either three or four sides. Here's my scratch paper that got me through this process:
I'll spare you the mathematics and get right to the good stuff:
This completes the basic primitiv
There is only one word to describe the people of the gaming industry: awesome. Maybe it’s because we work on projects we love, maybe it’s the lack of sleep, it could be the countless hours we’ve spent perfecting our twitch reflexes, but I think the bottom line is we are 1337 (It’s probably because of the robe and wizard hat).
This past weekend members of the Leadwerks team journeyed out to the Sacramento Game Developers Meetup Group http://www.meetup.com/gamedeveloper/ to rub elbows with the
Something I have never tried before is working with terrain and placing buildings on top of it. The idea is that you can build everywhere on the map as long as the slopes aren't to steep and there is no building already placed.
The Grid.
Although you have the freedom of building a tower where ever you want, the underlying system still works with a grid system. That means that gridpoints can be tagged as "can not build". It also leaves space between buildings which is nice because I don't ha
UML diagrams, object-oriented frameworks, and beautiful modular architecture are great things to develop, but sometimes you just need to make an application that real people can use. For me, that means you start with the behavior you want, and work backwards to make the code that does it. In the past I've considered fancy object-oriented mouse tool classes, but the style of editing I want is intuitive, easy, and fast, using the fewest number of mouse clicks possible to achieve a task. I think
While waiting on fixes for the flight-model and control inputs, putting some game into the game we talked about ranges and how performance measuring was going to work. In addition we wanted to add a little variety which required working mob AI.
So nothing fancy but I managed to rustle up a simple finite state machine FSM to get some tanks and cars running around. Our design uses a group formation system (a group is a number of individual units that share common logic, e.g a tank platoon)
Leadwerks Software is now offering internships through the Center for Entreprenuership at Sacramento State University. Internships are available for programming, 3D art, web development, and marketing.
Programming Internship
Assist the development team with tools and core engine design.
Work with game development team to create a sample Leadwerks3D game.
Gain experience working in a professional software development environment.
C++ and Lua experience are a plus but not required.
Tower defense games are my favorite casual games. The last few weeks I have been spending some free time on playing several of them. Steam had a lot of sales recently which gave me no choice but to buy them. Here are a few:
Defense Grid: The awakening
Orcs must die
iBomber: Pacific
They are quite addictive and found myself buying a lot of available DLC´s.
Mutant Madness
I want to build a simple tower defense game. That means:
Build a tower on flat ground
Tower shoots o
Everyone's gone for the weekend, and I am still here, so it seems like a good time to stop and say hello to the community, who I have not been communicating with much lately.
We spent some time this week doing some market research, and investigating exactly why Leadwerks is different and unique. After that I feel like I have a much better picture of the game industry as a whole, and of our strategy going forward. That's the "big picture" stuff we CEO's do.
Meanwhile, back on the groun
I feel like I've resolved the design challenges I was facing in my last blog. A menu item is always checked, specifying what the current object is that will be created when the user clicks on a viewport. There are two types of objects that can be created, brushes and entities. Brushes are constructive solid geometry objects that can be sketched out to quickly design a building. Entities are created at a point in space, and include lights, sounds, and particle emitters. As I have described i