Git Product home page Git Product logo

grinch-simulator's Introduction

Grinch Simulator

The Grinch has no-clipped out of reality and into a desolate city! Help him steal all their presents and avoid being caught by Santa.

Demo video

Inspiration ๐Ÿค”

Grinch Simulator's art style was inspired by classic 80s games. I actually used the NES's colour palette to draw all the textures. Gameplay wise, I took inspiration from the popular genre of maze horror games like Labyrinthine, and The Backrooms. These games use the uncanny feeling of desolation and loneliness among a familiar environment to build suspense. I also heavily relied on music and sound effects, which I took from open source projects, in order to create a thematic environment.

What it does ๐ŸŽ

In Grinch Simulator, the player plays as the Grinch who finds themselves in the middle of a desolate town on Christmas Eve. The player must navigate the complex maze while stealing any presents found along the way. But there is a catch! Santa is also on the loose and he is not too excited to see the Grinch's plot to ruin Christmas. The player must must avoid running into Santa at all costs and make use of their stamina to sprint away when he gets too close. But stamina will quickly deplete, and it takes a long time to regenerate.

How I built it โšก

I created this game with the Zig programming language and the Raylib graphics library using emscripten to compile to web assembly.

This project was created based on this zig-raylib examples repo. I had to do major tweaking to get it to compile. Several random Raylib source files were giving errors and connecting my emscripten SDK was really finicky. Overall, I was surprised with the quality of documentation available for such niche technologies.

Challenges I ran into ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป

I ran into many challenged while creating Grinch Simulator. One major challenge occurred when developing the system which textures the buildings and other 2.5D sprites. The graphics api Raylib provides is extremely low level and I had several issues with version discrepancies between the documentation and the version I was using. In the end, through a lot of trial and error, I managed to get textures rendering in a slightly incorrect manner which I was able to manually correct on a per case basis.

Accomplishments that I'm proud of โญ

I'm proud of my implementation of the lighting system. Last year, during the Holiday Game Jam 2021, I implemented a similar lightning system in my team's submission. However, last year I attempted to implement it in a glsl shader and my inexperience working with glsl, as well as my improper use case, lead to the final product being slow, imprecise and not particularly all too amazing looking. This year I used a much simpler implementation that runs entirely on the CPU. I was able to make many optimization this time around which has lead to an infinitely better performance at no cost to quality.

What I learned ๐Ÿ“”

Throughout the course of this jam, I became significantly more adept working with Zig. I believe this low level programming experience will translate to other programming languages of similar caliber, such as C or Rust. At the beginning of the jam, I was overly hesitant to use dynamic memory allocation for fear that it would lead to memory leaks. By the end of the jam, I had learned how to allocate memory and free it properly and was making much more use of it.

What's next for Grinch Simulator ๐Ÿ“†

I think that I would like to expand this game by drawing more texture variations. Right now there are only 3 textures wall textures between every building. I could also make use of tinting, rotating, and mirroring textures to increase the diversity. I also think that in the future I would like to further develop Santa's AI, as currently the path finding algorithm is far from perfect. I would like the system to be more dynamic overall.

grinch-simulator's People

Contributors

dmrgn avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.