Lyceum [Codename:Ghosts] Dev Blog #2

Just a quick update on where things are.

First, this type of update is likely to be more common. I had previously intended to only really blog about major changes, but I would rather journal the experience a little more closely. I think it’s easy to lose sight of just how much work is involved in game design, even if you’re an experienced developer.

Since last time, I’ve gutted previous scenes and scripts to move to a puzzle-only build. This will be the puzzle-y prototype I’ll build for the web and release as a demo to get feedback, hooopefully this month.

Since getting that build lined up, I’ve been wrestling with various ways of creating a cool “paint smear” effect for the magic. Unity offers a dozen or more paths to that same concept, though so far none have panned out.

1. LineRenderer
First I wrestled with LineRenderer for a day or so. It’s not too bad, really. You can “draw” on the game palette like it’s a tablet drawing app, though there are a few weird artifacts (additive shaders + line strip overlap = sharp stuff). What really turned me off about LineRenderer is how (seemingly) non-performant it is in this scenario. Lots of memory re-allocation/tweaking/etc., just seemed like it was going to cripple the mobile builds. I didn’t actually verify, though.

2. Particles
Next I played with particle effects for awhile. This is one of those subsystems that I think you can never have enough experience with, and as a corollary, you’re never really good enough to get your imagination down. It triply doesn’t help that I’m stuck firmly in Programmer Art land, still, either.

I did make some progress with just directly tweaking particles, though I have a lot of concerns about keeping that performant.

The idea here was to sort of draw on the way energy bounces around in Harvest:Massive Encounter (such a neat game). Alternatively, I’d kind of like to have the particles be… “wispy windy light strands”? I don’t have any idea how to search for anything remotely similar to that, or appropriate textures/shaders/etc.

3. Vectrosity
Vectrosity is this great Unity extension I picked up to try to accomplish something akin to what I was doing with LineRenderer, but more performant and with less overhead. I think it accomplishes that, but unfortunately I think the particular thing I’m doing here runs into an issue Vectrosity’s developer Eric hasn’t taken on yet: Wide lines and sharp curves (even if using continuous lines/stripes/etc.) cause overlap. It seems like a pretty trick problem to solve in a performant way, so I can’t fault him, especially since he got back to me so fast about it. Great support/documentation. :)

You can see that issue in the image to the right (or below, depending on resolution). vectrosity_side-by-side
This also sort of shows what I was running into with LineRenderer. That overlap “spike” pops up wherever the curvature plays poorly with the line width, if you’re using transparent/additive/etc. textuers. (It’s low-point-density on purpose, and the white dots were for debugging. :P)

I played with various Vectrosity ideas/approaches for about a day, trying to come up with a way to yield a good-looking solution. So far no luck.

This issue is very similar to something I saw in Inkscape when creating the imagery for the vine effect in the previous Ghosts dev blog, which is that obviously separate draw calls for overlapping transparent geometry are going to make things look weird. As a result, I spent half a day trying to brush up on shader implementation, wondering if there’d be some low-hanging silver bullet fruit that would let me solve this issue. So far no luck, but I don’t think learning shaders is the most productive use of my time right this moment.

4. Particles: Part Deux! (plus Vectrosity)
Back to particles I go, and this is where I am right now. Essentially, my plan is to use Vectrosity to place a simple and constant line where the player has drawn, then use particle effects to gussy it up.

  • The ideal here is to have “gossamer strands of animated colored light” that zip out along the curve defined by player points (likely simplified into a series of beziers, or maybe a simple spline).
  • Second choice would be strips of light, sort of like the warp lights you see in almost anything space-y.
  • Third choice is just point lights of some sort, which is closest to Harvest:Massive Encounter out of these options.

We’ll see what tomorrow brings. Particle effects are fun to work on, but the inherent RNG in finding something appropriate (at least given my low skill/familiarity) is frustrating.

So, that’s Ghosts for now.

Oh, and just because I find it interesting to see how other try to improve their craft, my reading materials the last 10-11 days have been:

  • The Visual Display of Quantitative Information by Edward Tufte. This was more for my “toys” over on my general design blog, The Book of Next, but in general it provides a solid introduction to presenting data. As a believer in data-driven/science-driven decisions, this was really useful.
  • So Good They Can’t Ignore You by Cal Newport. I couldn’t put this down, read it in an evening. This book is probably too hand-wavey for some, but I found it gel’d well with what I’ve read in psych/sociology so far. I think his discussion of the craftsmanship perspective is valuable for an independent developer. You can get a quick overview of it here (and its linked posts).
  • Rework by Jason Fried and David Heinemeier Hansson of 37signals. This one I also read in one short sitting, fun/insightful? I think it’s a good read for anyone looking to start an indie studio, because I think they focus on “business as a way to live a job you love” rather than the “business as a path to an exit” we get from startup culture. Seems to fit indie game devs better.
  • Amusing Ourselves to Death by Neil Postman. About 1/3rd through this and I think it’s already getting me to think differently about how multiplayer games are situated within culture, and the kinds of challenges and responsibilities that fact entails for us as developers.
  • Artificial Intelligence: A Modern Approach by Stuart Russell and Peter Norvig. I seem to always be cracking this open trying to figure out new things, and I’ve given myself the task of tackling this (and the next entry) the way I did when I originally bought the book. Partially as refresher, and partially to complete the book (never did). I think it’s sad how little evidence of applied AI/Machine Learning I see out there. So many obscenely powerful tools and so few people familiar with them. This book’s a pretty solid introduction.
  • Pattern Classification by Richard O. Duda, Peter E. Hart, and David G. Stork. I didn’t get as much out of this back in school as I could have – only barely scratched it really. I find myself thinking in terms of classification a lot (like, a lot lot) lately, so I figured it was time to really dig in and master this material. No better code kata out there than implementing algorithms to get an intuitive grasp of a new topic.

Hope one of those turns out useful for someone. :)

That’s it for now.

Posted in Developer Blog Posts, Lyceum Developer Blog

Leave a Reply

Your email address will not be published. Required fields are marked *