LD 43 November 30–December 3, 2018

PLEASE QUETZALCOATL

The all-mighty Quetzalcoatl will be very displeased if he does not receive 10 more sacrifices in the next five days. Grab a friend, or play solo, and please the reasonable and merciful Quetzalcoatl!

IMBemXiNoZa.GIF IMB/emVu0CBF.GIF

Sacrifice the weak to evolve into a superrace!

Spartan style! It's an RTS-like game so you can control and kill off a lot of weaklings which is necessary to have enough generations to ‘evolve’. https://ldjam.com/events/ludum-dare/43/cheela shirt-evolution-super-saiyan-black.jpg

Play And Rate My Game Here And I Might Play and Rate Your Game!

Play My Game Here: https://ldjam.com/events/ludum-dare/43/ld-43-jam-project

In the comments of this post, post the link for your game.

My game is a browser game, so it should not take long to start and finish playing. It is a 2D platformer.

Graveyard Gladiator!!!

Come Check Out Our Game! We Only Need 11 More Votes to Qualify! https://ldjam.com/events/ludum-dare/43/graveyard-gladiator

asdasdf.png https://ldjam.com/events/ludum-dare/43/graveyard-gladiator

1 or 2 more ratings!

Hey all! Just a couple more ratings needed to get a ranking on the game! Thinking about picking this project back up again depending on what feedback I get so any constructive criticism is greatly appreciated :) Its a game all about choices and consequence (and canmibalism) Play it here: https://ldjam.com/events/ludum-dare/43/transit-terror BusLevel4.png Logo.png Screenie4.PNG

Golden Lord: After the Jam, part 2

In my last blog post, I described the basics of working in html52d, how Golden Lord was implemented using the features that were available, and some of the corners I cut during the jam in order to get it done faster.

Since then, I've been refactoring the code and https://ldjam.com/events/ludum-dare/43/golden-lord. (Try it out it if you haven't yet!)

screenshot

I realized fairly early into the refactoring process that I needed a better way to organize the code and the assets. Throwing everything into .js files and loading it all from the HTML file worked, sure, but it was sloppy and I had to be careful about dependencies and global variables. And I discovered the limitations of the prefab structure I had built, but I didn't want to take the time to overhaul that during the jam itself.

The prefab system was intended to support class inheritance from the beginning. The asset manager would let you put anything you wanted in a prefab, so you could return a descriptor object like I showed in the last blog post, or you could return a constructor function or a class. And using a class meant that the problems I described before with adding additional functions went away. But this yielded an API inconsistency: you had to know whether a prefab was a descriptor (new Sprite(assets.prefab.hero)) or a class (new assets.prefab.Hero()) when you wanted to use it.

This was straightforward to fix. When loading prefabs on startup, the asset manager now wraps descriptors in a class that inherits from Sprite. Everything can be constructed the same way now.

Once I had this worked out I was able to refactor my character prefabs. I moved the common utility functions into a CharacterCore class that extends Sprite and made the prefabs into classes that extend CharacterCore. The awkward checks to see what kind of character it is turned into clean object-oriented function overrides. I'm MUCH happier with it now.

However, this inheritance scheme means that the characters have a load-time dependency now. This meant more global variables and more manual configuration of the load process. Normally I would have just used ES6 modules for the task, but browser support for these isn't quite universal enough for me to be comfortable with it yet. If you want to use them in your own code, it's perfectly well supported by html52d itself, so feel free to do so. Instead, I built a require() mechanism sort of like CommonJS or AMD modules, except it's a little cleaner than either of those.

While I was working on import machinery I also added a way for prefabs to define asset dependencies instead of requiring the developer to specify all of the assets that will ever be used up front. This can include runtime script dependencies too, though you can't use this syntax to pull in a class that you inherit from since the Javascript language requires that the superclass already be defined.

In the end, I'm a lot happier with how things are structured now. I still have some work to do because I'm not completely satisfied with the way the modularization works because there's no good way to minify them. I don't want to require a build system for development but I also don't want to prevent using a build system for deployment, so I've got some thinking to do. In the end I might go ahead and switch over to ES6 modules after all and let the build process be responsible for supporting older browsers.

2D Reflections in AkimBear

I’d like to share my approach for creating reflections for AkimBear in Unity since I think it turned out rather well and could give you some ideas for future projects. I am a technical one so there will be code, but I’ll try to keep it to a minimum.

Inspiration

If our reflections look at all familiar that’s because I based them on this post from Kingdom’s TIGsource. I wasn’t as strict on my pixel precision and didn’t do any of the perspective correction that Kingdom details (this being a game jam after all).

Overview

You can get an idea of the final result (if you haven’t played AkimBear yet) from the trailer:

https://youtu.be/avRx-U6SNHk

I felt that a flowchart of the rendering to attain the reflection would give the best sense for how this effect is achieved at a system level:

RenderFlow.png

In terms of components, the system is just a camera for capturing the area to be reflected and the reflection itself.

ReflectionSystem.PNG

Easy, right? Stick around for the alignment issues.

More perspectives on the world

Apparently, a camera in Unity cannot both display on the screen and render to a texture. Initially I found this disappointing as that’s what reflection is right? I think this may have actually been a blessing in disguise; AkimBear has a rather lively camera (both position and orthographic size are constantly changing) and I might have ended up with even more mess if I’d been trying to use that camera to generate reflections.

A second camera it was! This camera is offset up from the main camera and it has a render texture set as its target texture. Other than that, it’s identical to the main camera… or so I thought initially (see camera property matching script later). This was my first eureka moment, since I could see the screen in the inspector for the render texture:

ScreenTexture_inspector.PNG

The TIGsource thread from Kingdom had stated that this was not possible without the Pro version of Unity so I was very, very happy when this just worked without being pay-walled.

It’s basically done now right?

Sitting under a tree on a sunny day

The task of the shader is quite simple: take a sample from both the screen texture and the highlight texture and then combine them. The sample into the screen texture should ripple to give the sense of water and the highlight should show some flow. I’ve commented this snippet (shader source here) to give you an idea of what everything does:

fixed4 frag(v2f IN) : SV_Target { // Generate an offset value in both x and y directions float offx = noise(15.0 * IN.texcoord - 1.5 * _Time.yx); float offy = noise(0.05 * IN.texcoord); // Sample the screen texture offset in the x direction float2 uv = IN.texcoord + float2(0.02 * offx, 0.0); fixed4 c = tex2D(_ScreenTex, uv) * IN.color; // Sample the highlight texture uv.y += offy; fixed4 h = tex2D(_Highlights, 3.0 * uv + _Time.yx / 2.0) * IN.color; // This is not good shader code; should be no dynamic branching! // maybe o = lerp(c, h, h.a) would have worked as well? fixed4 o; if (h.a > 0.5) { o = lerp(c, h, 0.5); } else { o = c; } o.rgb *= o.a; return o; }

Why did I use a noise function seeded with a 2D vector? This is a legitimate question and I’m not sure (I’m sure it made more sense at the time). The same result could have been attained with a few trig functions and would likely have been more efficient.

Why all the magic numbers? If you take their product it spells game jam in ascii. Just take my word for that.

All done right?

alignment_bad.gif

Well, its kind of reflecting.

The last 10% is 90% of the work (but not of this post)

A few unacceptable issues are apparent. They all stem from using Cinemachine to control our camera for following Grizzle and creating screen shake. This means that it isn't as simple as just attaching our second camera and reflection surface to the main camera. This was solved with a few scripts to exactly follow the Cinemachine (main) camera on any axis and match the parameters for the two cameras. The parameter matching is incredibly hacky: it uses linear interpolation across empirical values to keep the reflection camera at the right offset while the orthographic size is varying.

After much hacking, both the reflection camera and surface were following the wild zooms and shakes. This took much longer than the actual reflection to get right.

Remaining bug

The last remaining (apparent) issue with the reflection system is quite awful. I really wished I’d had time to fix it (maybe a variable passed to the shader on a per-frame basis to compensate for it?). But I’ve yet to hear anyone notice it on their own, so if you see it keep it to yourself.

Find the bug yourself by playing AkimBear!

This was a pretty quick overview, so if you want to know more, feel free to reach out! If you want further detail than the comments allow, my email is ecmjohnson at gmail.com

Castle Defense - LD43 Entry

An so 4 days and 17 hours until the rating ends I realized I need some ratings. Please have a look and give my tower defense game a try.

Castle Defense will keep you on the tip of your seat.

Link: https://ldjam.com/events/ludum-dare/43/castle-defense

From this after only a few hours into the JAM...

screenshot-001.jpg

TO this after the JAM...

screenshot-012.jpg

Just delete them

Check it out: https://ldjam.com/events/ludum-dare/43/just-delete-them Just delete them gif_03.gif

I need 3 more ratings until I reach 100 :)

You have angered the god of war, Ares , and now you are forced to fight in a 1v1 ​gladiator arena to kill and sacrifice your opponent just for the fun of the gods. You have to choose, it’s your life or theirs

If you want me to play and rate your game please post a link to it in the comments. CoverHigh.png\ ezgif.com-optimiz22e.gif

Hellhole: feed the wrathful god

1da56.png

Welcome to the Cursed Town, a seaside village over which looms a famished Eldritch God. As the authority of the community, you are tasked with saving your villagers from its ultimate demise: the destruction of your village.

To do so, you will have to build a town strong enough to exorcise the God out of this plane; but the more time goes on, the hungrier they will get: you will have no choice but appease the God with the occasional passerby, snatching them from the bridge.

1ec11.gif

CONTROLS: -Click structures to activate them / upgrade them -Hover over the top-left "?" icon to get an overview of your situation and resources. -Manipulate live crucifix (or any other holy bauble you might own) to hopefully save your digital environment from the calamities of the Outer God's fury.

Play it here: https://ldjam.com/events/ludum-dare/43/hellhole

Goat Life - Compo

Happy holidays! If you've got a moment, please check out, rate (and optionally leave feedback for) my LD43 compo entry, 'Goat Life'. I need a handful more ratings to reach 20 total, so I'd really appreciate your help!

1eff5.jpg

Only 2 more ratings until 40

We only need 2 more ratings on our game Suicicde Sanctum! https://ldjam.com/events/ludum-dare/43/suicide-sanctum https://ldjam.com/events/ludum-dare/43/suicide-sanctum https://ldjam.com/events/ludum-dare/43/suicide-sanctum

Thumb.png

1 0.png

Organic Harvest

Do you have a missing brain? Have you ever felt like you have one excess kidney? Whatever your problem is, Dr. Dr. Ludwig and his team will gladly take care of you and your organs. Just lay down on that conveyor belt over there and wake up a different person*!

* Terms and conditions apply

person.gif

https://ldjam.com/events/ludum-dare/43/organic-harvest

I only needs 9,921 ratings to reach 10,000 ratings

Do you have any fiends and are you ready to play a local multiplayer game? Then you can play and rate my game, and if 9,920 do the same, the game can reach 10,000 ratings.

NytIkon.jpg

You find my game here: https://ldjam.com/events/ludum-dare/43/exploding-sport

The Black Wind Howl - A Cold Escape

New Project (6).png

Imagine if you woke up in the middle of a cold and dark space, hands tingling, head dizzy and feet betraying your nerves… How would you feel?

TERRIBLE, of course! In fact, that’s the exact situation you’re in, inside the game called _Lintahlo. _

Constantly, your heart is beating in an irregular manner, like a grim reaper’s anticipation as he takes his time preparing for the sails. What makes you think that he won't take you with him? No less, did it ever cross your mind that he wasn’t real? *Big mistake. *

As you’ll find out, when you play this game, doubting its existence would be making a terrible decision.

Oh but DO NOT panic, for all hope is not lost. Within the shackles of the icy dungeon of despair, you share company with a stranger. Are they friend, or are they foe? Who decides that? How do you know if you’re a friend… or a foe?

When you begin to regain your senses, you realise that you have superhuman abilities such as jumping midway through air. Not only this, but you’ve also been equipped with a grapplehook; it’s almost as if someone has hooked you into one big plan…

At any point, you can fall to your death.
At any point, you could get stuck *forever. *
At any point, you could even *disappear. *

If you dare to play this game, be prepared for consequences that exceed the time you’re currently living in. Be prepared, child of man.

As the black winds howl, *sacrifices… must… be made. *

Play now on https://ldjam.com/events/ludum-dare/43/lintalho

Please review my game

Not a lot of time left for LDJam 43 to be over...I am looking to get as many reviews/feedback/suggestions/comments/criticisms as I can...

Link: https://ldjam.com/events/ludum-dare/43/friends-or-food

Puzzle game

sacriflag.gif

Try my game :) It is a small puzzle game about re-assigning stats to optimize your score ! :sparkles:

-> Play now <-