StarWars Dark Forces Inspired Game Art
Latest Screenshot:
Hello, everyone! So, I've been meaning to start this thread for a while. I've always been a huge fan of Dark Forces - especially the first one. The game obviously took place in the Star Wars universe, but had a style all its own.
A while back I got some free time, and got sort of sucked into making some game art in that same style. The end goal is to make a single-level mobile 3rd person shooter. This was also a good exercise in creating textures my favorite way - using 3DS Max.
I have an orthographic camera aimed down at a bunch of geometry. If you fiddle with the AA settings in MAX you can get some very near-pixelart quality textures.
Here's an example:
All the textures I've made for this are done that same way.
For those interested in more specifics, here's the source for an earlier version of that texture.
http://www.hedfiles.net/ImpTex_Peek.zip
I've also made two ships - a TIE Fighter:
And a Custom Corellian Transport, the Verpine Bastard:
I started off using Unity 4, and started with the Beast Lightmapper. This went surprisingly well - the Lightmaps took like 2-3 minutes to bake, and looked awesome. Here are some of the earliest tests...
..And then Unity 5 came out. I had to give it a shot, and moved over to the Enlighten lighting system. The lightmap generation time (using settings from Unity 4) jumped to 2+ hours to bake.
Eventually I adapted more to the new settings required for quick lightmaps in Unity 5, and got the bake times down to 15-20 minutes. Which are pretty reasonable, given how much the scene has grown.
Here's the latest!
And for those wondering how I did the reflections, here:
And here's what it look like running on a mobile device:
Anyhow, I hope you like what you see, and any feedback or crits would be extremely welcome.
Enjoy!
Replies
That's why when I move to having more...ominous... underlit areas of the level, I'll flip those textures upside down.
That's just with a diffuse map, though - if I really wanted to go all out, it's super simple to make a pixel-perfect normal map from the same MAX file...
which means that all lighting would be possible. I've even got the option of generating a depth map, and getting some parallax goin' on. I'm not going to, of course - it's not the style, but the texture creation system supports all of that.
Great work so far! I love the custom transport, and the whole thing makes me nostalgic for the golden era of Star Wars games.
http://www.hedfiles.net/DFMobile/DFMobile.html
WASD for movement, Click and drag on the right-hand sphere to look around. Controls are very mobile-centric now - I've already added, but not hooked up options to make it more intuitive in the web player.
.nL: Completely and totally agree. I haven't even done anything to the cockpit glass yet- it's a single 32x32 black texture - I'm trying to decide if I do a full 3d cockpit or go with fancy textured glass. Honestly, I'm leaning cockpit.
Thanks for looking!
i know you said it's a 3rd person mobile game... but 1st person on desktop would be so kickass! (and probably better than battlefront 3)
It's looking really good, I love your Corellian ship! Any chance of seeing it in motion?
With all the current battlefront hype, i imagine you could send the stuff to some kinda news site after a bit of polish and have a decent chance of coverage
Also are you going to do a similar thing with the ship to achieve reflections underneath it?
I can only speak in superlatives after I saw your progress. This reminds me of all those times I enjoyed Dark Forces back in the 90' .
Thank you for bringing this back to life. I can't wait to see more.
Lawless Flogic: Maybe I'll add that option - if it doesn't require a butt-ton of new art to make it equally awesome.
Paul Pepera: Thanks! I did the same, actually - that's probably why this sticks in my mind so strongly.
skullsplitter: Have you given the webplayer build a shot?
Sanislov: Well, there's no technical reason, no. But since at the texel resolution I've chosen (3M = 256 pixels) a 6.4M long TIE Fighter would only fit on a 1024 one way - and since the wing panels are the primary concern, given how massive they are, I had a bit of free space left over. and since I like to put procedural grime in the corners of geo, it might as well be unique grime, if I've got the space. Since I did, I'm prettu sure everything ended up uniquely unwrapped, except for the sides of the radial fins coming out of the wing hubs. (Lower Min-Right on the uv layout) That's just because there's 48 of them, if they were all unique.
urgaffel: Absolutely, I'll record a video here in a bit and post it up.
Shrike: So that's actually intentional - The scene is all lit with GI, so everything has the same lighting - and it's all driving, with the exception of two spotlights in the hangar for awesomeness, by the emissive textures on the Geo itself. The reason that the Verpine Bastard stands out like she does is because I'm following in the footsteps of most of the art direction i've seen on Star Wars - Imperial = hard edges, clean, with a slightly blue-green tone, and Rebel - rounded edges, subtle curves, messy, with a slightly red-orange tone. Compare the texture for the VB to the imperial textures above:
You can see why it'd look slightly out of place - it's supposed to, it's your ship not an imperial craft.
And yeah, I'm sure I could share this with kotaku and they'd be interested - but I'd really rather not until its a lot more polished. there's not even any UI graphics of the barest gameplay yet for crying out loud.
MephistonX: I absolutely am! I have to add the landing gear and the lowered boarding ramp - those will definitely have reflections and I'm planning on putting a rough horizonal blurry outline in there too - since the ship is mostly flat, this should be enough...
I'll post back in a bit with details on how I did the auto-tiling procedural crater textures for the asteroid bits - mostly because I think it's cool.
Thanks again!
I haven't played around with lens flares in unity but I would gladly be curious your script!
So your technique sounds really interesting, just grabbing from an ortho camera in max? So what are you doing for the scorching/wear type things that are on the surface. Do you paint that stuff in? Or is that procedural materials in Max?
I really like the crunchy low/res-ish feel, combined with all that detail. Really neat.
The old school reflections under the floor trick is awesome! Very convincing. Also really liking the sprite storm troopers, although its a little jarring when you pass by them, as they seem to always draw in front of the player.
Seriously though, this is rad.
Here's the interface:
So you can see - you've got the option to have anisotropic falloffs on the facing direction of the flare source. In this case, that's the +z axis. Then you've got the distance falloffs, min and max. Then you've got the two colors the script blends between for on and off values - Flare Color is full on, while Fade Color is full off. Flare and Fade Size work the same way. Check Visibility will cast a ray in the scene to see if the flare source is visible to your camera. I should probably add a layer mask to this.
The Optimize switch will make the script only update on a random spread of X frames +/- 25%. This helps stagger the cost of using a raycast and rebuilt verticies on the flare meshes. The Check Frequency controls the base number of frames between re-calculations.
finally, Occlude Speed adjusts how fast the flare fades out when visibility is lost.
http://www.hedfiles.net/FlareControl.unitypackage
Hope it's helpful!
Paul: Thank you, sir! I can't help but day dream about mimicing your tugs in this style. :P
Dark Acre Jack: Thanks. Likely, it'd look absolutely identical - since I'm not using normal maps or actual screen space reflections, I really doubt there'd be an ounce of discernable difference.
theduderdude: Yeah, I'm for real - and this is just what I do for fun. I don't want to make a habit of commercializing my relaxation and problem solving enjoyment time, since I work plenty as it is. This also, isn't my first free side project that's a labor of love.
www.wingsofstnazaire.com
Also, I've been one of those starry-eyed low self esteem artists, and I'd never ever want to take advantage of anyone like how I've been. The thought is enough to make my hackles rise. If I ever do lose my job and find myself out on the street, sure, I'll put something together.
That something sure as fuck will be fair and equitable to all involved. This industry is far too small to ever expect acting like a selfish douchebag won't catch up to you.
gsokol: Thank you sir! the technique is exactly as you describe - the scorch marks are just streched geospheres with a falloff alpha and some also stretched noise bump. Things like wear and corner grime are a bit more complex. I use a plugin called F-Edge to bake a map that calls out all the hard edges on the low poly model. I then screen-project that back onto the orthograpic camera - sort of reverse placement of the uv coordinates. The corner grime is an Mental Ray AO map with the angle blown out to 3 or 4, and with a goofy noise + clamp on top. Ends up looking pretty darn convincing. everything else is just procedural materials, as you said.
I also second what you said about the storm troopers up close - I just added a fix that aligns them to the cameras plane, and not the cameras location. Pretty subtle difference, but it definitely feels better.
Okay, I promised to share how I was doing automatic seamless procedural texture baking in MAX. Would it surprise you to know that it's a donut?
That's right! a donut is the only shape that has UV coordinates tiling in all directions.
The only tricky part is taking into account that the donut has squished faces on the inner portion. To get around this, any procedural texture is duplicated, and scaled down to 1/4th the size. Then we can use a vertically projected circular gradient to blend them together only on the inner faces:
The final portion of this is to adjust the uvs of the donut to keep the baked texture from squishing. after a bit of fiddling, the best solution I've fount is this:
alteration to the default torus generated UVs.
Apply your procedural texture, and in no time, you can have something that looks an awful lot like this:
Pretty cool, huh? My next thing is going to be some low-poly procedural asteroids for outside the landing bay. Sort of going to spruce up the local neighborhood.
Enjoy, and thanks for taking a look!
Also thanks for explaining the procedural bake process. I remember playing around with the torus idea but hating the distortion. Love your solution. The blending though is a bit soft and muddy, I wonder if a chunky mask would improve it?
The web demo is fun to walk around in. Great to see how well the reflections hold up. The transparency mask on the floor makes it look like Roughness in action.
What's going on with your movement script? Some interesting organic motion in there.
Eric Chadwick: Thanks - I think I'm going to keep it free for now. it;'s not nearly complex enough to warrant people paying for it. Its as imple utility script, and it's not even that awesome.
And I bet a chunky mask would improve it - it wouldn't be much work to add one, either.
The transparency mimicing roughness was one of the big surprises of this to me. I really wasnt expecting it to look that good.
The movement script has a noise generator that is blended with the cameras look location, on top of player input. Every random step of frames (3-10) the script chooses another Random.InUnitSphere Vector3 that is then smoothdamped between. it's a nice, smooth, scriptable noise that can increase while the player runs or gets shot. I need to add a sine motion in there when the character walks, though - otherwise, it just won't look right.
Rebb, Minos, Thane-,Razorb, Saman, snow, Jeff Parrott: Thanks, I'm realy stoked you like it!
Swarm22: Correct! That's exactly how this was done. It makes the texturing process very relaxing - especially since everything in the scene is mapped to exactly the same texel resolution 256px = 3m, or the height of a hallway. That lets be reuse greebles and items all over the place, and have them look like they intentionally belong.
Hi! So, as an update, I've added a bunch of asteroids, and added markings to the floor of the hangar.
So, I also thought I'd share my method for making Procedural Asteroids. I use a combination of a subdivided box with a spherify modifier, custom UVs, and then that base is used twice, once with just a displace modifier, and once with a turbosmooth+displace. These are both then parented to a Linked XForm modifier, that's used to move them about in the scene to change the displacement. Here's an example:
You can see that I'm just creating Snapshots of the two asteroids as I go, when I see somehting I like. I then can use the low poly (with it's already made custom UVs) to bake the lighting, and materials if you desire. I put together the 12 or so asteroids in the scene in about 10 minutes, including bake time.
Here's the Max File. http://www.hedfiles.net/Asteroid_Generator.zip
And the build has been updated as well: www.hedfiles.net/DFMobile/DFMobile.html
Enjoy!
Great, great job. I'd kickstart this in half a second if it were an actual game. That being said there's probably a lot of nostolgia mixed in with any accurate praise O.o
Still, very good job nailing both the aesthetic of original trilogy Star Wars and Dark Forces/Mid nineties games.
locater16: Thank you! I agree that's its hard to separate nostalgia from "good" sometimes, but hopefully as this project goes on that becomes easier and easier.
So, I started adding in HUD UI. Hopefully it matches the style of the original game...
And the original game reference...
Enjoy!
Regarding the HUD I'm not quite sure . My opinion is you kind of over did it with the leather. It drags my attention from the scene behind + covers a bit too large portion of the screen space. The controllers visually don't align and since your character is already covering up the left side of the happening in front of the camera covering the right side by a big HUD seems like a bad design option. Notice how decent the HUD in the original gameplay is so you have a clear view in front of you ( regardless some gun designs that take away the screen space later in the game).
So my suggestion is to visually align the controllers to a line and rearrange the icons around them while getting rid of excess leather parts.
One more reason to rearrange the icons above the right controller is that you would cover them with your finger for most of the time not knowing what's going on there ( maybe activating something by mistake).
I still admire the work you have already done on this project. Can't wait to see more of it.