As an exercise

gb_baconorm_sample

I’ve been a little ill the last couple weeks, and I decided while I’m trying to get better I might as well fool around with GIMP to flex my fingers. I half-promised a texture set to the Warsow devs, and since photosourced images are off limits (due to license conflict) this is a good opportunity to try and hand-craft the entire set.

I haven’t really done that before – SJ textures rely on photosourced material quite heavily – so this is a nice little challenge.

Keep in mind there is no lighting – the above shot is just diffuse maps straight from GIMP. The finished set will have normal and specular maps of course.


FTE update

Spike piles it on. The most promiscuous engine on the planet got a barrel-load of new features and various bugfixes. In lieu of a functioning FTE website, and since I sometimes dwell on it anyway, I’ll just mention some of the news (the ones with gamedev implementations):

  • Cylinder geom for ODE
  • Gamepad in SDL client
  • X11 unicode input
  • Wayland support
  • IQM vertex colours
  • a host of touchscreen related improvements
  • “gimmicky” lua support (server side only)
  • Optional support for tesselation HLSL in DX11
  • Shader blobs to save some loading time

Going back through the SVN log, I find those worth to mention:

  • SDL2 support
  • Something about portals

Since Spike apparently also rewrote a bunch of things, this update-blob fixed a major SJ bug in passing that was related to IQM models. Striiiike.

Get FTE here.


Monster doodle 1

herdsentinel_rend

I guess I started to model monsters, then. Let’s start small with the Herd Sentinel.


Mapping in Blender: Let’s try that again

For a number of reasons, I decided to try Blender for environments again. I wanted to do this for a while now, but the need to manually build collision hulls out of brushes, as well as the q3map2 compiler being annoying, kept me away from it.

I think the time is ripe for another attempt. I want to circumvent FTE’s patch mesh related problems – and let’s be honest, no one uses patch meshes anymore. I also want my assets to be future proof. BSP isn’t future proof. Patch meshes suck. And looking at the kind of detail in the SJ levels, I have to wonder how I managed to build that out of brushes without going insane.

I also decided to divide my levels into smaller parts. Instead of five or six mega-levels, SJ will then have perhaps 12 normal-sized ones. This has many advantages, too.

I went and broke up the herd base into three levels – Herdbase Labs, Herdbase Exterior, Herdbase Interior. The level changes will be visually smooth because some rooms are duplicated as needed. You can look into other levels at some points, even.

Then I exported Herdbase Labs into Blender. Here’s the result:

Skærmbillede fra 2014-02-27 08:34:47

Everything gets chopped into random triangles by q3map2 during the conversion. Yay. Here’s that same area after an initial cleanup:

Skærmbillede fra 2014-02-28 11:30:56

Much better. Turning everything into quads allows me to use Blender’s modeling tools to the full extent. Loop cut, bevel, you name it.

Trying to do environments in Blender is a whole different kind of business. You will be dealing with absurd amounts of polygons in a scene. Effective use of Blender’s navigation, view and selection modes becomes vital. Instancing and grouping objects becomes a life saver.

Skærmbillede fra 2014-02-28 11:32:22

It becomes critical to divide your scenes into individual objects in the best way possible to preserve clean edge flow and topology. Trying to match up the edge loops of an entire room seems to be the road to failure. You need to start thinking in tiles and modules. And it is mandatory to learn how to snap things to the grid and perfectly align objects.

Skærmbillede fra 2014-02-28 11:35:57

UV unwrapping things on the fly and pixel-perfectly aligning UV maps to textures is another required new skill. Doing trims is somewhat easier in Radiant, until you’ve got the workflow down for precision UVmapping.

I’m quite happy with Blender though. It is so much more powerful than any BSP editor.

Skærmbillede fra 2014-03-02 03:00:50

What I’m doing now is slowly going through the environment, cleaning it up, and polishing objects that will occur in multiple instances. Doing environment art in Blender (or any 3D modeling suite) is probably a real test because of the amount of organisation needed. It’s not just learning the tool rather well, it’s also about establishing the best workflow.

Skærmbillede fra 2014-03-02 06:45:40

I’m polishing these prefabs as I encounter them, in between cleaning up the topology of rooms. This will take a few weeks, but it probably is for the best. I hope to be able to use much of the old BSP levels as collision hulls / caulk hulls. We’ll see how that turns out.

Another thing you notice very quickly when going this route is that eventually, you will have to go fully modular. Not using repeatable modules is basically disastrous when you’re working at this detail level. My plan for the last few levels of SJ (those that aren’t a legacy from a Quake mod…) is to go for unique setpieces, but go completely modular for corridors etc. Doing all unique stuff is simply too time intensive.

In case you’re wondering how to convert all that back to brushes, I’ll have to disappoint you. I’m not planning to. The map compiler will have to deal with this. I have compiled maps including terrain meshes that have more polies than this entire environment, so I’m cautiously optimistic.


Article: ODE physics in FTE

odephysics

As requested by user nil, spawnhost now has a blurb about making physics objects in FTE using the Open Dynamics Engine. I believe this was originally a Darkplaces extension, so much of it should apply to both game engines.

Be warned that this is no cakewalk. The article is intended for advanced QC programmers and game devs. Not everything is spelled out in detail for simple lack of time, and it has “RTFM” in it.

If that doesn’t scare you, read on.


Physics online

A few days were spent on adding physics objects to Scout’s Journey, driven by ODE. The hardest part was reading the entire ODE manual. It took a long time to divine all the obscure bits of information hidden around the internet and various source codes. Very little documentation exists for utilizing ODE in games using FTE or Darkplaces.

Anyway, I’ve got bouncing crates and rolling buckets in the game now. Things tumble over edges and down slopes quite naturally. Adding more physics objects is now largely a matter of copy and paste. I can also apply forces to physics objects e.g. by shooting them.

Some routines have been written to auto-enable/disable physics to save performance, and to restock the world with physics objects that have for some reason fallen through the level – this is still a small issue, although it doesn’t break the game.

I think buoyancy can be hacked in quite easily, so objects will swim or sink in water. It is a matter of endless tweaking, mostly. Currently there are only box and sphere geometries, I think cylinder and trimesh are work-in-progress judging from the FTE source.

Another thing I’ve done today is find out how to play SJ with a gamepad. I can report that there is gamepad support under Windows only at the moment. I hope Spike hacks up some gamepad support for Linux, too, at least, in the future.

My Playstation pad clone is quite usable already; I can even intercept gamepad buttons in CSQC. The problem with the GUI right now is making the cursor react to the gamepad.

SJ will probably provide some form of aim assist eventually, so you can play with a pad, although it’ll default to off. Personally I find playing with a gamepad a lot more relaxing, and SJ isn’t exactly a competitive multiplayer FPS, so having the option will be a nice thing.


Ascension run

temple_02_2

The temple dungeon + temple setpiece have been joined. From now on, there is only “the temple.”

Surprisingly, the result is still pretty lightweight, probably because it’s really still a block-out. All the buildings etc. in the outdoor part are placeholders, and the dungeon part isn’t very detailed yet. But at least it is, sort of, layout complete. Pending a bit of fiddling with buildings and the exit part of the dungeon.

temple_02_1

Yeah, I’m posting those gratuitous screenshots with blocky rocks because at least I’m getting somewhere. Don’t worry, better rocks and vegetation are on the way in Blender. I think the platform with the altar here will be a beautiful place one day. Some NPCs are supposed to hang around there once I make them.

temple_02_3

Placeholder boats and everything, still. But from now on, I can model those assets piece by piece and drop them in.

temple_joining

The joining of the two maps in Radiant; it’s laughable how small that entire stupid dungeon seems now. Also note how ginormous the actual temple building is.

temple_entrance

Some terrain sections have been cut out to make room for the dungeon entrance. The resulting hole will be plugged with a mesh, hopefully making it look a bit like a mine entrance.

t_light8

There is now a portal room in the dungeon, too; this is obviously a placeholder. The other portal is in the Herd base map. There are no other teleporters in the game; the temple will serve as a kind of travel hub.

I have been working on the herd base as well, I hope to get that layout complete soon so finally these bothersome levels are at a stage where I can go and do mostly other stuff for the rest of the year, again hopefully.


Follow

Get every new post delivered to your Inbox.

Join 38 other followers