Return to “Dev Logs”

Post

[Lindsey] Friday, October 27, 2017

#1
Friday, October 27, 2017

Hi I'm Lindsey

Hello everybody!!! o/// For those of you who don't know, I'm Lindsey Reid, the newest edition to the LT team! Josh announced & explained me joining the team in his last devlog, so read about it there if you haven't already :) TL;DR: Josh and I met (& subsequently started dating) through the Baton Rouge indie dev scene, then I moved to California to work on a game for """the man""", then I moved back here to work with Josh on LT :) I have skills as both an artist and a programmer, so I'm focusing on writing procedural space ships and space stations. I'm starting with stations.

I've been here working on this for a few weeks already, so there's a lot to talk about. I'm also new to writing dev logs for the public eye, so do give me feedback on what you're interested in seeing (other than pictures, I know I know :V) and if I drawl on too long about code and algorithms. OR not long enough!

Soooo... I'm gonna follow Josh's example and first write a brief recap, and then delve into details on some of the fun stuff.

Also, the Imgur gallery is here. Some of it won't make sense without reading the post :V



Brief Recap

  • Researched & drew very, very basic concept art for stations
  • Wrote foundations of Shape library for basic building blocks of procedural geometry, including:
    • Prism (with arbitrary # of sides to the 'base face' & radius, height)
    • Irregular Prism (same as above, but with unequal side length & radius for each side of the 'base face')
    • Ellipsoid (like spheres, but with arbitrary w, l, h)
    • Torus (with arbitrary functions for the inner and outer rings & radius of each)
    • Box (arbitrary w, l, h)
    • Scaffolding (arbitrary w, l, h)
  • Began foundations of Warp library for making those Shapes interesting
  • Wrote foundations of Joint system for combining Shapes along Joints
  • Wrote Piece object for storing combined Shapes
  • Experienced awe and terror at the nebulous challenge ahead of me
  • Pulled art theory out of my butt and made cool shapes with it I guess
(note that I wrote "foundations of" in almost all of these bullet points; while these libraries are pretty solid for now, I fully expect them to expand later as I start building stations with them)



Research & Concept

It is quite the challenge to build a station generator from scratch. Most other games and generators I've seen that leverage procedural content can be broken down into handmade art assets at some level, but we're doing this completely from scratch. Handmade content means you have control over defining an aesthetic down to the details, even if the way you combine them is partially random. But we don't want to hand-make one or two or fives or 100 styles for one or two or five or 100 unique alien ships, we want to be able to generate an aesthetic for an infinite number of alien civilizations. This comes with a handful of challenges that I'll be chronicling my progress in solving with these devlogs. And these problems aren't ones I can sit down and work through in a week- they're questions I've been asking since I started this ambitious project, and I'll be continuing to solve them as I build the codebase and until the day we call this 'done'. I won't really know if I'm solving these problems until I start generating stations and seeing if they look good or not. When they don't look good, I'll re-write and tweak and concept and try again. And when they do look good... we'll have an infinite number of them.

Of course, this is still a game, which means I can't just throw any old random shapes together. Players need consistency and clarity. Most games, even those that use PCG, re-use models, textures, and color schemes for the sake of clarity of their game elements. For example, in any game with treasure chests, even if you're halfway across the game world traversing completely different civilizations, treasure chests all pretty much look the same. But in LT, we want to use PCG to stretch the limits of maintaining recognizability between game elements while encouraging visual diversity between different alien cultures. With stations, for example, it'll be pretty important to be able to look at a station and immediately identify if it's likely to destroy you, say, by the number of visible weapons it has. We can't go crazy and generate just any shape we want and call it a 'gun'- that would be impossible to read. With either clever UI or similarity in shape, texture, or color scheme of weaponry, players need to be able to immediately look at a station armed with 10 huge guns and be like, ah, maybe I shouldn't mess with this guy right now. (or 'ah', let me get out my 10 even BIGGER guns and blow him to smithereens. :V) Then again, it'll be boring (and confusing in its own way) if the high-tech, opulent, flamboyant alien station has guns that look exactly like the guns on the small, scrappy station across the system. Again, we want each alien culture to have their own unique aesthetics. It's a tough balance to maintain. And a challenge I'll enjoy tackling.

My main goal with concepting stations, therefore, much unlike traditional concept art, is not to define exactly what stations and ships will look like, but to identify patterns in how stations are built and why they look good. Over the past few weeks, I've been collecting reference art & photos, both in books and on a Pinterest board, and doodling stations myself. I use these references to identify patterns for how stations are visualized: basic shapes used, clusters and patterns those shapes are arranged in, and overall silhouettes. Those patterns form the basis for how the generation algorithms will work and what shapes, warps, and patterns they'll use to create awesome, diverse stations.

Spoiler:      SHOW
Pictured below: concept doodles for whole stations & for shapes & patterns to build those stations out of. Also, random ideas scribbled on sticky notes, and at the very bottom, art books indexed with sticky tabs for quickly finding my favorite space station concepts.
Image


Shapes, Pieces, & Joints

As an artist, when I look at the world and want to translate it into a drawing, I look for two major things: 1, the composition- the lines of action, negative space, silhouettes, and large shapes holding everything together; and 2, the individual shapes that, combined together, create the composition. I've spent the last few weeks analyzing my own art and other's drawings to figure out the major patterns that can be used to describe these nebulous ideas, and what particular patterns of composition and shapes are used to specifically create space stations. And since I won't have any pieces to generate interesting compositions without the shapes that make them up, I decided to start this whole process by creating a library of shapes.

I chose the shapes to fill the library with by analyzing space station concepts and picking pieces that could conceivably be the foundational shapes that they're all made of. All of these shapes will be warped, combined, rotated, and otherwise modified to create the functional and purely aesthetic modules that make up stations. These are mostly just an estimation of what I need right now, so I'll expand the library as needed.
  • Prism
    • Spoiler:      SHOW
      Image
    • Just imagine the big shape without all of the little rectangles around it, and that's a prism :p it allows for arbitrary side #, radius, and height. The rectangles are actually a demonstration of the Joint system working!!! (which is explained below.)
  • Irregular Prism
    • Spoiler:      SHOW
      Image
    • The code to generate this is actually quite similar to the prism, but the radius and angle for each vertex on the base face is random.
  • Ellipsoid
    • Spoiler:      SHOW
      Image
    • Ellipsoid is just a fancy word for a sphere with arbitrary width, length, and height.
  • Torus
    • Spoiler:      SHOW
      Image
    • I included tori as a primary shape because 1) they're hecking cool and 2) SO many space stations have rings. also, it was fun to code. As you can see in the full Imgur gallery, both the inner and outer ring of the torus use parametric functions to make customizable shapes.
  • Box
    • A box is a box. You know what boxes look like. also i forgot to take a screenshot
  • Scaffolding
    • Spoiler:      SHOW
      Image
    • Scaffolding is kind of an odd one out because it defines a very specific shape. It's one of the first clusters of shapes that I made, and it's really here more just to demonstration that my mesh rotation & translation was working than anything else. I do expect to use it, since scaffolding is such a common shape on many space stations, but it may or may not be one of the 'primary' shapes.

In addition, I started cooking up the library of Warps and Joints. Warps have the ability to apply all kinds of functions to every vertex on a mesh in order to rotate, stretch, skew, and wiggle it into a particular shape or pattern. I don't have fun screenshots or examples just yet because I didn't have time to experiment with this. Instead, Joints were my highest priority this past week. A 'Joint' represents a point on a mesh with a position and a direction. Connecting two meshes on joints, you rotate and translate the first mesh so that the direction on the 1st mesh's joint aligns with the direction on the 2nd mesh's joint. (In math words, you transform the 1st mesh into the basis defined by the 2nd joint.) This is imperative for enabling the station generation algorithms to connect shapes in an interesting way, so it's exciting that we made this happen so quickly. And not only did we get joint connection working, but I also wrote a function that can create joints for meshes that would be difficult to hard-code. The function places a joint at the center of every quad and tri in the mesh, with the joint pointing in the direction of the surface normal. I'm hoping this will turn out to be a useful pattern for the procedural shape-combining algorithms. If it's not, I'll find a way to tweak it. And finally, I created an object for storing combined shapes- that's kinda technical in a boring way, so I won't bother to go into detail. TL;DR: We can now define connection points for shapes and GENERATE connection points for complicated and randomized shapes :)



Fin

Whew!!! I just finished my first ever public devlog!!!!! Whoaa!!! Let me know what y'all think :) And don't forget to look at the Imgur gallery for the full visual goodness of this week!!!
Ship Inspiration Pinterest!! (send me stuff)

"You’ve got to work on something dangerous. You have to work on something that makes you uncertain. Something that makes you doubt yourself... because it stimulates you to do things you haven’t done before. The whole thing is if you know where you’re going, you’ve gone, as the poet says. And that’s death."
- Stephen Sondheim
Post

Re: [Lindsey] Friday, October 27, 2017

#2
Some of those random irregular shapes, once duplicated and rotated (so you have an array of them surrounding a single point) would provide very interesting detail.

This is very cool work Lindsey! It'll be great seeing how you progress your generation systems.
°˖◝(ಠ‸ಠ)◜˖°
WebGL Spaceships and Trails
<Cuisinart8> apparently without the demon driving him around Silver has the intelligence of a botched lobotomy patient ~ Mar 04 2020
console.log(`What's all ${this} ${Date.now()}`);
Post

Re: [Lindsey] Friday, October 27, 2017

#3
for the scaffolding i wouldnt use such a hard defined shape when possible but more of a set of constraints on the repeated cell element(has to connect to the vertices, has to provide multiple ways from each vertice to every other etc)
enabling different structural variations than the basic x-on-the-prism-face variation of scaffolding.
eg organic frameworks which look nothing like the classic straight girder based scaffolding
Spoiler:      SHOW
Image
Image
truss structure designed by genetic algorithm (at least i think its one, it looks like the stuff optimiser algorithms spit out)
Spoiler:      SHOW
Image
maybe also some fractal components on the structures

fractal scaffolding
Spoiler:      SHOW
Image
Image
Image
Post

Re: [Lindsey] Friday, October 27, 2017

#6
JoshParnell wrote:
Fri Oct 27, 2017 6:38 pm
Cornflakes_91 wrote: (request for quantum leap in scaffolding complexity)
Give it time :V

Also, :clap: :clap: :clap:
a quantum leap is a really really small and really really common thing, so its confirmed to be in! :D :ghost: :squirrel:
JoshParnell wrote:
Fri Oct 27, 2017 6:38 pm
The forthcoming retort about misusing 'quantum leap' is already predicted, FYI :V
... carp :lol:
Post

Re: [Lindsey] Friday, October 27, 2017

#13
Silverware wrote:
Fri Oct 27, 2017 6:23 pm
Some of those random irregular shapes, once duplicated and rotated (so you have an array of them surrounding a single point) would provide very interesting detail.

This is very cool work Lindsey! It'll be great seeing how you progress your generation systems.
Thank you, Silver! I had the same thought about the irregular shapes :0

miyagi wrote:
Fri Oct 27, 2017 8:54 pm
Hello! Can we have procedural greebles too?!
Hello and welcome, Miyagi! I'm planning on it :)

Cornflakes_91 wrote:
Fri Oct 27, 2017 7:17 pm
note: i dont demand genetic algorithm designed truss strucures, just something beyond the straight-girder-cross version :P
For sure! Like the post says, the scaffolding blocks are more of a test of systems I was working on than a 'final version' of something. The work has only just begun :000
Ship Inspiration Pinterest!! (send me stuff)

"You’ve got to work on something dangerous. You have to work on something that makes you uncertain. Something that makes you doubt yourself... because it stimulates you to do things you haven’t done before. The whole thing is if you know where you’re going, you’ve gone, as the poet says. And that’s death."
- Stephen Sondheim
Post

Re: [Lindsey] Friday, October 27, 2017

#14
Welcome Lindsey, great start, looking forward to all the shinies.

Just wanted to comment that when designing how stations will be laid out/shaped, the first thing is whether or not they have artificial gravity or are they rotating for it (or no gravity like the ISS). This affects both shape and necessary size, as well as things like docking/mooring.
Post

Re: [Lindsey] Friday, October 27, 2017

#15
Faey wrote:
Fri Oct 27, 2017 9:13 pm
Welcome Lindsey, great start, looking forward to all the shinies.

Just wanted to comment that when designing how stations will be laid out/shaped, the first thing is whether or not they have artificial gravity or are they rotating for it (or no gravity like the ISS). This affects both shape and necessary size, as well as things like docking/mooring.
Yes, good point! We decided early on that ships & stations in LT have artificial gravity. Requiring rotation for gravity limits the kinds of shapes we can create, and not having gravity at all makes creating realistic docking setups harder. So we went with the option that allows for the most diversity in appearance and ease of gameplay, which is hand-wavy-technobabble-this-just-has-gravity-somehow gravity :D
Ship Inspiration Pinterest!! (send me stuff)

"You’ve got to work on something dangerous. You have to work on something that makes you uncertain. Something that makes you doubt yourself... because it stimulates you to do things you haven’t done before. The whole thing is if you know where you’re going, you’ve gone, as the poet says. And that’s death."
- Stephen Sondheim

Online Now

Users browsing this forum: No registered users and 4 guests

cron