AWS Logo
Menu
Monke: Explore a mysterious world

Monke: Explore a mysterious world

A 3d adventure game for aws game builder challenge

Published Jan 15, 2025
Last Modified Jan 24, 2025

INTRO :

Hello everyone, I'm Ankith—a full-time graduate student transitioning into software development. Over the year, I’ve embraced the mantra: “Build fast, fail fast, learn fast.” This approach has been my compass for tackling ambitious projects, and my latest creation is no exception.
When I stumbled upon the AWS Game Builder Challenge just 20 days before the deadline, I knew I had to participate. The idea of creating a game that reflects on philosophical thought process on human evolution and its eventual journey toward AGI had been lingering in my mind for a while. This challenge was the perfect opportunity to bring it to life.
Monke is an immersive 3D exploration game where players embark on a transformative journey through time. This simple yet captivating open-world puzzle-solving game is built using React Three Fiber and powered by AWS services. The goal was to create not just a game but an experience. This project allowed me to combine technology with storytelling to deliver something that is not just fun to play but also thought-provoking.
Try the game here : Monke
Different level game play

GAME CONCEPT :

The storyline reflects the journey of evolution, starting from a primitive beginning and progressing toward greater understanding and capability. Players explore a mysterious environment, overcome obstacles, and solve puzzles to reveal secrets that drive survival and progress. Subtle inspiration from ancestral simulation theory adds a layer of reflection on humanity’s pursuit of knowledge.
Gameplay Mechanics
Movement: Use W, A, S, D to move the character, Space to jump, and Shift to run. Energy depletes at a constant rate, which can be replenished by collecting bananas.
Survival: Avoid predators and manage resources effectively to stay alive.
NPC Interaction: Talk to NPCs to get hints and guidance for solving puzzles and navigating the environment.
Winning Condition: The player who completes all levels in the fewest days will be at the top of the leaderboard, adding a competitive challenge to the game.

DEVELOPMENT :

My primary goal was to create a smooth gaming experience with consistently high FPS and make use of available packages .
  • Early on I encountered significant performance drops, especially when mounting large environments. That’s when I realized I didn’t need to render the entire game at once. To address this, I divided the game environment into levels and parts, ensuring only the necessary assets were rendered based on the player’s position in the game scene.
  • I initially started coding 3D objects directly with React Three Fiber and Three.js, but I soon realized the need for a more efficient workflow. To optimize my process, I switched to creating environments in Blender and getting free objects under cc license. During this transition, I discovered gltfjsx, a tool that converts GLTF files into JSX components and significantly reduces asset sizes—by up to 94%. These combined optimizations helped me achieve a consistent 120 FPS throughout the game.
  • gltfjsx reducing the assets size significantly and producing jsx component
  • I integrated Rapier, a powerful physics engine. Rapier provided efficient collision management, making interactions between objects realistic and seamless.
     
    Rapier physics engine showing object collision colliders
  • One of my key aspirations was to create intelligent NPCs that could interact with players. Initially, I experimented with a stack of AWS services, including AWS Transcribe, Polly, and bedrock , to manage audio input, output, and conversation AI capabilities. However I eventually discovered AWS lex v2 which offered a streamlined solution. The Lex bots, equipped with generative QnA AI intents, allowed me to Handle both audio input and output seamlessly, Store knowledge and retrieve it dynamically to provide meaningful hints and guidance to player
    vectorized Knowledge base attachment to lex bots
Lex bots GenAI intents

AWS RESOURCES:

  • Amazon Cognito : handling user authentication
  • Lambda : hosting the backend functions that connect with S3 and DynamoDB
  • API Gateway : connecting the Lambda functions to be accessible from the frontend
  • CloudFront : delivering the assets to be accessible and load faster
  • S3 : storing the game assets and transcriptions
  • Lex V2 Bots : providing conversational AI intent Bots
  • bedrock : serving vectorized knowledge base with claude models
  • OpenSearch Serverless : delivering search capabilities on the knowledge bases
  • Titan text embeddings V2: generating meaningful semantic representations for documents
  • AWS CDK : deploying infrastructure as code
  • Finally Amazon Q : AI assistant which was phenomenal and made this game possible by :
    a. Helping me synthesize and deploy AWS resources

    b. Fixing my cdk stack , lambda handler and prepare for front end audio input format

    c. Fixing the game logic where I was able to make minigames inside my game in no time .

OUTRO :

Working with Amazon Q has made me realize how close we are to a future where software development becomes as intuitive as having a conversation. Reflecting on the evolution of technology—from writing meticulous assembly code and working directly with circuit boards to the ease of modern high-level languages and frameworks—it's incredible how far we've come. Now, with AI, turning ideas into functional code and solving problems could become as simple and powerful as just describing them.
 

Comments