Activity

coeuzsnotionz

Shipped this project!

ARES started as a simple idea: build a 3D rover game using nothing but JavaScript and p5.js. I wanted to challenge myself to move beyond 2D sketches and actually understand how real-time 3D environments, camera systems, and object-oriented game architecture work under the hood.

What I built is a modular WebGL-based rover navigation game with segmented infinite terrain, procedural obstacle spawning, and a dynamic chase camera. Everything — from terrain scrolling to collision logic — was implemented manually using clean OOP principles. No game engines. No shortcuts. Just core rendering logic and structured system design.

Along the way, I learned:

How 3D coordinate systems actually work in WebGL

How camera matrices affect perception and movement

The importance of consistent world scaling

Why separating logic into managers (GameManager, ObstacleManager, Rover) matters

How small architectural decisions impact scalability

I ran into bugs involving coordinate mismatches, object lifecycle issues, texture rendering in WebGL, and camera inversion — and each one forced me to think more like a systems designer instead of just a coder.

This project strengthened my understanding of real-time rendering, procedural systems, and game architecture fundamentals. More importantly, it reminded me that building something from scratch — debugging it, refactoring it, improving it — is where real learning happens.

ARES is a stepping stone toward building more immersive and technically ambitious interactive systems.

And this is just the beginning.

coeuzsnotionz

ARES — 3D WebGL Rover Exploration Game

ARES is a modular, real-time 3D rover navigation experience built entirely in JavaScript using p5.js (WEBGL). The game simulates planetary exploration where the player pilots a rover across dynamically scrolling terrain while avoiding procedurally spawned obstacles.

Core Gameplay:
Players control a rover navigating an endless terrain:
⬆ Move forward into unknown terrain
⬅➡ Maneuver laterally to avoid obstacles
🪨 Dodge dynamically generated hazards
📈 Increase score the longer you survive
The terrain scrolls seamlessly to create the illusion of continuous forward motion, while a chase camera dynamically tracks the rover’s movement.

Technical Highlights
🔹 Built with:
p5.js (WEBGL renderer)
JavaScript ES6 (Object-Oriented Architecture)
3D model loading via .obj files
Real-time texture mapping
Dynamic camera control

Attachment
0
coeuzsnotionz

Just redesigned the terrain needed for the game and completed the game.
The game is complete and deployable now, and I just be making a few more changes.

Attachment
0
coeuzsnotionz

Just made the html file ready so, it can be locally tested on browser.
Also additionally loaded all other assets.

Attachment
0
coeuzsnotionz

Just completed defining camera movements and giving rover definition so it can detect obstacles and process accordingly. The camera is set to move forward.

Attachment
0
coeuzsnotionz

Just design and implemented the dashboard screen onto the game. Further I’m planning to design the terrain 3d model and include it into the game.

Attachment
0
coeuzsnotionz

I’ve now additionally added the text on the main screen which says ARES and then show information about the game. I’ve installed custom fonts as assets, loaded them in setup and used them. The text is directly written on the 3d Space. Check it out.
Also, suggest if there is a better way to do it.

Attachment
Attachment
0
coeuzsnotionz

I have re-programmed sketch.js to match the new idea and to make improvements from the previous version. This ensures more efficient running and better logic than the old code.
Do give me suggestions on how to improve this.
Next I’m planning to create display text, and design dashboard. And then move on to creating terrains.

Attachment
0
coeuzsnotionz

Just created the obstacle class and defined its attributes. I’m planning to load a 3d model of a barricade like obstacle that gets spawned over the terrain. I also designed a texture for the same, whose image I have uploaded. Once the texture gets applied to the 3d model, it’ll look perfect.

Attachment
Attachment
Attachment
1

Comments

coeuzsnotionz
coeuzsnotionz 3 months ago

Give me suggestions and ideas to make the game better

coeuzsnotionz

I’ve created an object oriented definition to the rover object, ie created a constructor for it and defined it completely.
Additionally I’ve also added conditions to check collision of the rover with simple ifs.
Now the rover template is ready and I’m preparing to proceed to build the blueprint of the obstacles.
I’ve also designed the rover and converted it to an image loop(gif) to process it.

Attachment
Attachment
Attachment
0
coeuzsnotionz

Just created all the initial variables and imported all assets into the sketch.js.
Also initialized the canvas and setup the canvas and function draw, so the Ui is visible on the browser.
Additionally added an if condition to monitor rover controls and wrapped up V1 of the sketch.js and Ares.

Attachment
0