With SAGDC9 wrapped up, it’s time to move on. I’ve considered returning to work on Terminus, the Metroidvania clone I’ve been working on since my undergrad days at college. An idea popped into my head last Friday, however, and on Saturday I started fiddling around. The game idea is simple, move lights to get rid of the shadows.
The working title is “Light the World,” but I’ll probably replace that with ReLux or something like that in the future.
What will LTW have? What are the mechanics?
- Move lights to get rid of the darkness.
- Diffusers, which will shine when shone upon by lights. (Think omnidirectional mirror, since coding the reflection off mirrors is hard.)
- Light goals and dark goals. If these are present in a level, then rather than check to see if the whole thing is illuminated, make sure the lightgoals are lit and the darkgoals are in the shadows.
- Possibly movable polygons. Right now all the geometry is static, which I like, but that is subject to change in some levels.
Finally got the comparison function into my game. It’s a stripped/daft version of the Discrete Cosine Transform. It works well enough.
Special thanks to Internet Janitor for helping me through the pitfalls of unsigned data manipulation in Java. Check out his Github account here: https://github.com/JohnEarnest
EDIT: Found a problem with my function. It looks like the distance behaves well in test cases, but not in real cases.
Distance between white and black: 4
Distance between white and white: 0
Distance between black and black: 0
Distance between white and user image: 15
Distance between black and user image: 15
Notice the increasing distance with more accurate depictions.
While making this animation for Hidden Asbestos, the flare effect from the gun kept getting drawn with edges by the Freestyle rendering engine in Blender. It wasn’t too crazy to find a solution online, but it wasn’t immediately clear, either. The top result was actually for partially excluding lines. I needed to exclude the entire object. I did this by selecting the muzzle flash and adding it to a group, then selecting Freestyle > Selection By > Group > Exclude, and adding my flash to a group. The result: