There’s things I will never develop, such as the skill to update my blog at regular intervals, but luckily also things that I will, such as Passion and my Lua projects. In this post I’ll be talking about Passion, Evolve and a new project called Crafty.
Passion
It’s a shame that all the work I’ve put into Passion lately can be summed up in two words: Lua bindings. Using these binds I’ve written two demo projects, which aren’t all that spectacular, but they prove Passion is ready for some action.
On the left you see the old tank demo again, but this time rendered to a render target so that it can be drawn 4 times as 2D quads and on the right you see some 2D shadows. I’ve started experimenting with 2D shadows instead of 3D ones, to understand how it works without the complications in 3D. What I’m proud of is that the 2D shadows are completely calculated in Lua with a nice framerate above 100, which proves Lua is up for the task of doing real-time 3D games.
The problem is that I could have done the same thing in C++ months ago, but now that the Lua rendering (and basic input interface) is almost done, I can start working on my first game. Yes, I’ve made enough demos and it’s time for the real work! A great game will function as an advertisement for Passion as game development tool at the same time. More details about this game later, because I haven’t worked out all of the details yet. I can at least tell you that it will be a TPS (Top Down Shooter), but there will be a bigger focus on platforming than shooting.
Evolve
Due to the bigger time span between updates for Evolve, I know it seems like I’m neglecting it, but I think it’s stable enough to do its job right now. There are still important features missing, like tool restriction, map cycling and SourceBans admin integration, but other projects unfortunately have a higher priority for me right now.
Crafty (formerly known as GCraft)
Yes, you heard it right (or you’ll hear it now), I’m actually working on the first serious new gamemode project since Puzzle Gamemode. It can be described as a remake of the Minecraft alpha in Garry’s Mod. Why was it renamed from GCraft to Crafty? Well, another developer, thomasfn, also started working on a Minecraft gamemode with the same name. Because he started one day before me, he gets the name GCraft. Here’s an update on the current state of the gamemode:
As you can see the following features have been implemented so far:
- Working inventory and slots.
- Completely authentic HUD.
- Block crafting, both with the 2×2 grid and 3×3 grid.
- Physics simulation (gravity, fluids)
- Ambient lighting for a day and night cycle (sky gets darker, blocks get darker).
And the following things are left to do:
- Dynamic lighting.
- Handling items in addition to blocks.
- Mobs (Yes, they are planned!)
- Better map generation.
One major difference between GCraft (both thomasfn’s and my old one) is that the server backend is mostly written in C++ now. This made the physics and large map management possible. The blocks can get 8 times as small by the way, so stop moaning about that. I made them that big to make reloading the map while developing less of a pain in the ass. The clientside part is all Lua and it’s going to stay like that. I don’t think a clientside C++ module would make things easier anyway, because Lua handles map loading a lot better than saving. Another noteworthy difference is the fact the map is now sent as a regular file that appears when joining a server, instead of some user message crap. I’m currently figuring out how I’m going to do the lighting, so stay tuned for this!
Cloudscripts
Cloudscript is a new interesting thing in Garry’s Mod that makes it possible to download entities from a website similar to garrysmod.org and use them right away. You can read more about that here.
For a developer there’s a lot of advantages to this kind of addon publishing. Because users don’t store entities, but downloads them every time you spawn them, you’re sure people are always using the latest version of your addon and they aren’t moaning about bugs in old versions. You just submit the new code and instantly everyone has the latest version of your entity or weapon. Because there’s a relatively small amount of entities and weapons being released this way right now, there’s a big amount of people who will try your addon, which in turn assures quick feedback.
Initially I didn’t really care about it, because I almost never make entities and if I do, I never think they’re worth releasing. A week ago I started trying the entities and weapons that were most popular on Cloudscript and it made me want to make at least one too. Inspired by the Portal 2 E3 videos, I set out to make a simple version of the repulsion and propulsion gel. The repulsion gel acts as a trampoline and the propulsion gel makes you move faster.
I started working on the repulsion gel first, because I expected it to be the most fun using. For the icon, I cut this picture from the E3 video and later for the propulsion gel a similar picture:
I had some trouble coming up with the way you’d spawn the gel and my first idea was to make the entity initially a blob that would turn into a splash if you threw it fast enough against a surface. I took the bouncy ball design and made it deform a little when hitting stuff, but it looked like shit. Then I took a look again at the picture above and tried making a bucket. It turned out pretty well. I made the entity render the bucket model twice, once with the regular model and material and once with a shrunk model and a solid blue material to represent the gel inside the bucket. As soon as you moved the bucket, I made the gel shake a bit which looked pretty cool. I also made it slowly get near the edge if you held the bucket upside down. The bucket part was done.
Then the old problem came back. What is the gel supposed to look like outside the bucket? I chose the bouncy ball look after all, which doesn’t even look that bad for it. Another advantage is that the gel generally doesn’t fall for longer than half a second.
Then came the final problem. Or at least I thought it was. How was I supposed to make the gel splash without custom materials? I decided to take the paint decal material and apply the same solid blue material to it. The decal is too small, so I used the mesh library to manually draw an enlarged paint spot. I figured the physics would be a piece of cake after that.
I turned out to be very wrong. I won’t describe the full progress, but the physics made either the server crash, the gel splash would move or the player wouldn’t collide with it at all. After all the pain I finally got it to work. I uploaded it to the Cloudscript page, made sure it worked as a Cloudscript and waited for the response. Initially it turned out to be pretty buggy and Garry even had to change some stuff in Garry’s Mod to make the first version not crash, but it improved over the past week.
And then something that I hadn’t expected in the slightest. Suddenly my gel was the most popular Cloudscript entity currently available along with the infamous Friendly Gnome!
This inspired me to work on the propulsion gel which I released today. It’s now also slowly working it’s way up the Recently Most Popular list, but I don’t expect it to eventually sit next to the Repulsion Gel. Simply because it’s less fun in my opinion and I think other people will think the same. Because of the sudden success, I’m already making plans for a new entity. It’ll probably be something related to 3D2D.
That’s all I have to say right now. I’m sorry for the long read, but that’s what you can expect after like 3 months of no posts. I hope I made it interesting enough to be worth the read! School is starting for real for me again next week, but I think I can show the first stages of my Passion game and maaaaybe dynamic lighting in Crafty.