First of all, here is a link to my GitHub repo: https://github.com/treblereel/quake2-gwt-port

Inspiration

My main goal was to revive interest in my favorite game using new technologies like Quarkus and J2CL (Java to JavaScript transpiler).

What it does

It allows anyone to play Quake2 in a browser with their friends.

How I built it

At work we are looking at modern high-performance front-end and back-end technologies, so I decided to investigate some best options in my spare time. I had a good experience with Wildfly so Quarkus was the first candidate. After a few months I got a perfect set of frameworks for modern development on Java.

Challenges I ran into

I ran into some Quarkus bugs (static resource loading, for example) but received help extremely fast on Zulip, so it wasn't a stopper for me. I also found some tricky bugs in the Google Closure Compiler. But the most difficult part was to implement fast Java NIO buffers over J2CL, now it's a separate project which is published on Sonatype. Huge amount of old JSNI code has been rewritten to pure Java, it took me the longest time.

Accomplishments that I'm proud of

Easy to build, easy to run by everyone. High performance (60fps on my old 2011 macbook). Most importantly, the ability to play my favorite game again using only a browser.

What I learned

I learned how easy it is to use and deploy Quarkus applications, it's incredibly easy to add and configure any modules like WebSockets using the world-best documentation.

What's next for Quake2

Nothing on the server side, coz i have no issues with Quarkus. Code has been recompiled from C so it contains too many static classes to compile it to Quarkus native image, so I'm going to rewrite them. Plus bugfixing .

Built With

+ 5 more
Share this project:

Updates