(July 2018) Monthly WIP & Screenshot thread

Starting this month off with… doors…

They don’t open and close yet but the parts are there to do so. There is also still some tweaking to do as I don’t like how they fit in the opening so far… but those are just details.

…getting them to work is the next step. I’ll tweak the geometry later.

16 Likes

Is it just me or are those doors kind of umbrella corp logos? Sounds like you’re all going to die down there.

2 Likes

I’ve been working on a model with normal maps and shadings, and even a stary skybox!

main1main2

What’s it for? That’s for another day. :wink:

8 Likes

Yeah, that struck me a bit, too. It wasn’t intentional on my part but I’m not unhappy about it either. :slight_smile:

Testing projectile texture writing & mesh uv lighmap unwrap, it looks pretty simple but it wasnt:

Bullet projectile → custom mesh collider → custom mesh lightmap uv uwrap → 1k texture write → LightMap texture for testing, will be used as a dynamic splat map moving on.

Surprisingly the 1k texture is more than enough for this sized map, 4k would allow simple decals.

The ugly map in bottom corner is raw dump of random level generator with edges in red and for the moment “tree spawns” in green.

The ugly colored walls are a long cliff sculpted in blender then wrapped around the walls, still very much WIP, hence colors.

10 Likes

WIP - SevenSky library:

  • atmospheric scattering
  • volumetric clouds
  • day/night cycle
  • lighting based on sky
  • correct position of sun, moon, planets, stars
  • optimized to run on low-tier hardware
  • rainbows, etc

27 Likes

Awesome! Do you contribute this as a library already? This Looks much better then my crap.

Thanks, it is ready except some polishing of the library, documentation, etc and I will share it.

5 Likes

Holy shit, this looks awesome. Is this really done with jME? :stuck_out_tongue_winking_eye:
No, really, nice job :+1:

2 Likes

Not as impressive as cool clouds…

…but I have little terminal thingies now so I can go with the next step of being able to open/close the doors:

This took way longer than it should have because the level format had to change to account for the nested mount points… and that made me finally bite the bullet and scrap the weird gson custom adapters I was using and just go with something more straight-forward.

It’s hard to tell without being able to walk around it, but the little screen is even covered with greasy smudges like a real one would be:

9 Likes

Getting some SCP vibes here… :neutral_face:

3 Likes

Took me a few days, but I’ve finally hooked those terminals up to door animations.

It was a bit of extra work because I wired it through a series of systems/components… but now it will handle any number of terminals connected to a single door (wherever) as well as any switch-controlled sliding objects. So for example, I can already support sliding platforms if I set the component right.

There was also another trip through my gson code to rejigger the level format a bit. Always a pain.

7 Likes

So I’ve done another one of those short weekend projects, this time about mixing and passing on genomes. More of an afternoon project to be honest.

It’s basically a simulation based on a chapter I read in the book What If by Randal Munroe where he describes a way to present and combine simplified DNA in a intriguing way. I’ve adapted it for my case as following…

The debug text works this way for example: Sight: [initial average] | [current average]

Each of these cubes and blobs you see on the screenshot has 5 stats (or chromosomes if you will):

  • sight (radius of stuff detection)
  • health (for combat)
  • lifespan (number of cycles that a cube can live)
  • strength (combat works by health-strength)
  • color (to more easily keep track of lineages)

And they’re calculated by joining together two sets of direct ancestor chromosomes. Herein lies the interesting part. The ancestor stats can either be values or multipliers and when combining them together you either get:

  • two values, pick the better one
  • value and multiplier, multiply together
  • two multipliers, value is 1 (inbreeding causes lots of these due to high probability of multipliers on the same stat)

Then when passing on genetic data to children (the one sentence when this doesn’t refer to subnodes in gamedev lmao) the passed on set of stats is randomly picked from the two contained sets (one or the other for each stat).

Then I’ve put these cubes on a grid where they can move in 4 directions, gave them basic steering behaviors (wander, seek) and set them to follow these rules:

  • a) if hungry, wander until you see food, eat food, repeat
  • b) if really hungry do a) but also kill any other same sex cubes for food
  • c) if hunger is below a threshold seek out an opposite sex cube within 0-1 generational difference

If a cube dies from any cause, it drops food.

Then I spawned different amounts of food (small green cubes) and cubes (with random initial stats) and dropped them into different sized maps.

I ran it in the rendering thread with vsync off so I could get about 500-2000 steps a second, leaving some time for the cubes to live and procreate, then check the results.

While it’s not quite perfect, we can actually see natural selection at work. Here in the following screenshot we have a gigantic map and we can see the cubes were selected for huge sight values and long lifespans - which makes sense if you want to find food and a mate on a huge plane. The cubes with the best genes passed them on, the rest perished.

So basically, a genetic algorithm with extra steps :laughing:

Oh btw, the starved, killed and aged numbers list the amount of cubes that died in each way.

I’ve tried some further tests with added mutations and stuff, trying to get the selection to bring average values up to some crazy levels but it just wouldn’t work for some reason. I’m not sure if there were any massive outliers but it didn’t seem that way. ¯\_(ツ)_/¯

I suppose there could be some more interesting things we could do with this setup but I sort of deleted the whole genetics thing when trying to make it into a 2D quad noise terrain renderer…

Shouldn’t be too hard to reimplement if anyone has any clue where to go from this anyway. I sure had no further ideas at the time.


And finally, not jme related and not exactly a weekend project either: an underwater ROV I’m building.

Those are 1100 gallon per hour submersible bilge pumps for ships, with one of them converted to a prop so it can reverse thrust for depth control. I’d convert the remaining two as well, but I can’t get my hands on any more prop adapters. Local hobby shops are all out of this size and amazon doesn’t have it. :slightly_frowning_face:

This is just a preview test fit btw, as I still don’t quite know where to put the large buoyancy tanks so they’re above the depth prop and I think I’ll need twice as many in the end as well. The base console (see: pvc box with switches, monitor and a UPS battery) with switches is nearly done as well.

13 Likes

early ‘shoot down’, needs way more drama:

10 Likes

I’ve had a lot of players asking for a more directed play experience using quests… so I implemented a quests system this week :slight_smile:

The format is super simple:

grp.addQuest("forge", "forge.png")
    .setScreenLoc(900, 400)
    .itemGoal("forge", 1)
    .prereq("craftable")
    .consumeMaterials()
    .rewards(new ItemMatCount("oreCopper", 2)); 

Right now I have two “goal” types, but its pretty easy to add new goal types too. Not too bad for 8 hours of dev time :slight_smile:

15 Likes

Do you have a release date set? I’m looking forward to play, looks amazing!

Soon. Sometime in the next 9 months for sure. I’ve been targeting September, but if it slips at all it will be the beginning of next year sometime. There has been a lot of weird edge cases I’ve been finding with jME which have slowed me down a lot. For example, the lwjgl2 lib has a tendency to have issues getting the context back when you alt-tab in fullscreen mode and basically make the application appear to have frozen. Or my other favorite one… Nvidia cards appear to have a micro stutter every 1-2 seconds due to “Threaded Optimization” with lwjgl2 and almost double the gpu time with lwjgl3.

2 Likes

I have not touched my project in pass 3 weeks. Today I found this Littera — bitmap font generator , very useful and easy tool for bitmap fonts, you can also load regular font and export it to fnt.

5 Likes

Might not be as impressive as what you guys are doing,
but my compiler (it compiles my own thing based on Java, for the Game Boy) just output its first ROM:

Here it is in case anyone wants to try it:
https://drive.google.com/open?id=1toXcHVcsgF2WKUH8b24wKmsFcfOWJA7G

Also, I’ve been polishing my game further since I’m looking to release it soonTM. Lots of under-the-hood changes of course, but I also did this:

The arms go to whichever part you swapped and display a “sparks” animation.

12 Likes

Small space plasma pistol… no grip or paint job yet:

…happy with how it’s turning out so far, though.

9 Likes