Inspiration
We were inspired by several Three.js websites/projects that feature cool 3D animations. However, we felt that there is a general lack of interactive experiences that not only showcase, but also teach Three.js concepts. Hence, SAGA!
What it does
SAGA is an effort to teach people how to create simple games using Three.js in an unconventional and interactive way. We provide fun demonstrations along with explanations of the source code and opportunities for users to write their own code in our custom JavaScript editor. We divide our curriculum into two main sections: 1) Pseudo-game Engine, and 2) Non-Player Characters using LLMs.
Technologies we used to build it
React.js, Three.js, React Three Fiber, React Three Drei, React Three Rapier, Google AI Gemini API, WebGL
Challenges we ran into
- Initially we wanted to implement a Reinforcement Learning agent that would play some sort of simple pre-defined game against the human player. However, we quickly realized that we lacked the necessary experience and time to be able to implement a training environment for such a complex problem. Hence, we turned our attention towards the use of LLMs for NPC implementation.
- We had trouble implementing high-quality collision detection that would not make the webpage laggy.
- Trying to write high-quality curriculum proved challenging in such a limited amount of time
Accomplishments that we're proud of
- Making LLMs talk to each other, as well as to the human user
- Having a great and polished website design
- Lots of cool design features
- Taking on a very large-scale project, even though we did not end up finishing everything we initially wanted to
What we learned
- Use the Google Gemini API to make two autonomous agents talk to each other
- Use a Markdown Parser to render it in JavaScript
- Tons about graphics using Three.js + integrating it with React
- Use a physics engine
What's next for SAGA
- More lessons are incoming
- NPCs will be moving in the future
- Reinforcement Learning Agent will be trained
Log in or sign up for Devpost to join the conversation.