# I open-sourced my multiplayer shooter game - Wizard Masters

**URL:** <https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329>\
**Category:** Demos and projects\
**Created:** [March 21, 2025, 11:38am UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329 "2025-03-21T11:38:50Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![ertugrulcetin](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ertugrulcetin/32/33011_2.png) [@ertugrulcetin](https://forum.babylonjs.com/u/ertugrulcetin)\
**Post date:** [March 21, 2025, 11:38am UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/1 "2025-03-21T11:38:50Z")

</div>

Hello BabylonJS community!

I’m excited to share that I’ve open-sourced Wizard Masters, a multiplayer battle arena game built using BabylonJS!

About the Game:

Wizard Masters is a fast-paced third-person shooter where players control wizards with different elemental powers. The game features spell-based combat in an immersive 3D environment.

Technical Stack:

- Frontend: ClojureScript with BabylonJS for rendering and physics

- Backend: Clojure server handling multiplayer interactions

- Libraries used: Havok Physics, BabylonJS GUI, Materials, and more

The project demonstrates how BabylonJS can be used to create a complete game experience with features like:

- Fully 3D environment with physics interactions

- Particle effects for spells and abilities

- Custom materials and shaders

- Multiplayer networking

**You can check out the source code on GitHub:** [GitHub - ertugrulcetin/wizard-masters: Spell based third-person shooter game](https://github.com/ertugrulcetin/wizard-masters)

I’m looking forward to your feedback and hope this can serve as a reference for others building games with BabylonJS!

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [March 21, 2025, 1:27pm UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/2 "2025-03-21T13:27:57Z")

</div>

Crazy ! 😱

Maybe you should provide a simpler way to connect to the production server, since many people might have no clue about editing the `.cljs`

What about having this option in the UI after game starts ?

* * *

Anyway, I just gave it a try, I killed I don’t know who exactly, but I had a lot of fun ! 😁

---

<div class="post-metadata">

**Author:** ![onekit](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/onekit/32/49527_2.png) [@onekit](https://forum.babylonjs.com/u/onekit)\
**Post date:** [March 21, 2025, 1:42pm UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/3 "2025-03-21T13:42:09Z")

</div>

Amazing decision. ✨  
Gentlemen, press STAR ⭐ on this repository. It deserve of it.

---

<div class="post-metadata">

**Author:** ![ertugrulcetin](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ertugrulcetin/32/33011_2.png) [@ertugrulcetin](https://forum.babylonjs.com/u/ertugrulcetin)\
**Post date:** [March 21, 2025, 1:58pm UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/4 "2025-03-21T13:58:19Z")

</div>

Glad you liked it! About prod server, I think it’s pretty easy, just changing if flag to false. `(if config/dev? ...` =\> `(if false ...`

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [March 21, 2025, 2:29pm UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/5 "2025-03-21T14:29:27Z")

</div>

Yup, that’s what I did 🙂

---

<div class="post-metadata">

**Author:** ![ertugrulcetin](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ertugrulcetin/32/33011_2.png) [@ertugrulcetin](https://forum.babylonjs.com/u/ertugrulcetin)\
**Post date:** [March 21, 2025, 2:59pm UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/6 "2025-03-21T14:59:55Z")

</div>

@CodingCrusader you were interested in this project last week, I’m tagging you, you can check the source code.

---

<div class="post-metadata">

**Author:** ![Tricotou](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/tricotou/32/5844_2.png) [@Tricotou](https://forum.babylonjs.com/u/Tricotou)\
**Post date:** [March 21, 2025, 3:13pm UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/7 "2025-03-21T15:13:18Z")

</div>

@ertugrulcetin I just want to report an issue :

- After a fresh page reload (first visit), clicking the screen to join the game, the pointer lock won’t work the first time (and I need to click & drag to rotate camera)
- If I leave the tab context (for example clicking an other tab) and come back, then I have (again) a “click to join” button, and now only will it lock pointer

* * *

Always easy to point out an issue :  
 → The rest works FLAWLESSLY 👍 !

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [March 21, 2025, 3:49pm UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/8 "2025-03-21T15:49:28Z")

</div>

So cool! And thanks for making it OSS!

---

<div class="post-metadata">

**Author:** ![ertugrulcetin](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ertugrulcetin/32/33011_2.png) [@ertugrulcetin](https://forum.babylonjs.com/u/ertugrulcetin)\
**Post date:** [March 21, 2025, 3:53pm UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/9 "2025-03-21T15:53:38Z")

</div>

Thank you for creating BabylonJS!

---

<div class="post-metadata">

**Author:** ![c4cc](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/c4cc/32/50481_2.png) [@c4cc](https://forum.babylonjs.com/u/c4cc)\
**Post date:** [May 23, 2026, 3:44pm UTC](https://forum.babylonjs.com/t/i-open-sourced-my-multiplayer-shooter-game-wizard-masters/57329/10 "2026-05-23T15:44:44Z")

</div>

How much is the fps on lower end devices?
