Not Playing Well with Others

I'm still working hard on Tales of Yore and since I did the last devlog I've had a few queries asking what engine I was using or what technologies. I've used a lot of "engines" and "libraries" over the years and as my target game style/features got cut down due to time constraints, so did my need for much in the way of other people's code.

Tales of Yore is built using Typescript which, for those who don't use it, just compiles down into vanilla Javascript. My background and commercial work has been largely in Java, so I'm more used to the more constrained type safety of Typescrip. I find it very quick to work in. My workflow on the coding side is basically just npm, webpack and visual code. All of which are free, open and well used in my day job.

In terms of libraries I'm using on the client side:

  • - this is wrapper on WebSockets and real simplifies the handling of reconnections, message passing and falling back to polling if web sockets can't get through. 
  • bad-words - this just gives me a nicely accessible list of naughty words for client side checking of usernames etc.

And thats it really. I've written a library around the browser APIs to do all my rendering, sound, input, resource loading - I call it Gute. It's really just some fairly thin wrappers around HTML Canvas, HTML Input Events and the Web Audio API. There was a time when doing all of these things took a shed load of effort to make it work, and make it work fast - these days however all the work has been done and its already available directly in the browser. 

I'm not particularly proud or hard nosed about not using other libraries and engines but I do try to avoid anything I don't really have a good reason for. Most of the time, spending cycles understanding other people's mental model of this stuff takes me almost as long as wrapping it up myself. 

On the server side it's not much different. I used again of course and the server is Node based, so thats gives me a lot out of the box. It also has:

  • MySQL integration - since MySQL DBs are free for my hosting and it's and plain simple way of storing game saves. This may need to change if I ever reach sufficient scale but thats a problem for another day.
  • os-utils - this just gives me some leg up on monitoring the server(s) that the system is running on to check for performance problems and potential long term memory issues. So far - it's clean :)

Since you asked, that's what I'm using. It's not something I'd particular recommend, but the full control and flexibility over everything is quite nice. 

I'm not quite sure what to write about next, I'll be doing an update on game progress next week for sure. The client/server strategy might be an interesting one to some people. Or maybe something about scripting NPCs. 

Let me know in the comments if you have any suggestions.

Leave a comment

Log in with to leave a comment.