So as I mentioned in the last update, the biggest thing in this update is multiplayer. However I’ve also made progress in the mapfile rendering and UI. So basically:

  1. Multiplayer
  2. User Interface
  3. World Rendering

Multiplayer

So yeah, probably the most important aspect of the game. What’s actually included in this update? – A lot. This update basically breaks down to client and server communication, which basically means creating and updating player entities with each connected client. It’s more complicated than that. As I learned from my time in Rucoy Online (obligatory shoutout), I can’t just update every client with all entities information, the server has to be smart and update a client only of entities its need to know about(this usually means: entities that are in the clients screen). I’ve been working on the server since Dev Update #1, but only now have I got something to show. Maybe later in another post I’ll give a high level explanation of how the server currently works, but for now this is all I’ll share.

User Interface

I actually enjoy working on UIs. I worked on many of the menus of Rucoy, and something I think we learned then is to probably not reinvent the wheel. LibGDX comes with a fully packed UI framework called Scene2d. So I setup the client to work with 3 view: UI view, HUD view and Game view. Each view has its own viewport so it can scale independently if the screen changes and I can treat them differently as needed.

The UI view is where I’m using Scene2d. The UI you see in the video is by no means final, but I did make the buttons and setup a font to test it out. There’s a whole lot of things included in Scene2d, but I have to provide the visuals. I made some of the basics and worked with that. One of the main things I worked on was loading/connecting screen. I don’t plan on having long loading and connection times, but I wanted to have a satisfying loading screen so I made sure to animate it based on real assets loading into memory. I felt it was this was important since one of the things I want to add is procedurally generated instances and these will probably need a loading screen when players enter them (more on this later).

The HUD view is currently just some debug lines centered on the screen. This will eventually include any in-game UI elements like a healthbar. And the Game view is basically the same thing as before, I just abstracted it out of the initial app state.

World Rendering

world.tmx – A simple town

Another cool thing that LibGDX already supports: tile maps. As in Rucoy Online, I’m using Tiled Map Editor to create my map file. At the moment I made a map file and rendered it in the Game view, using it’s viewport units. There is however a criteria the map file should meet. If you look at my Logo and Sprites post, I’m using a couple of tilesets for the world. This means there are multiple texture files needed. Since we want to be resourceful and efficient when rendering we want the app to make as little texture swaps as possible so I’ve organized the map to have multiple layers, where only one tileset (a texture file) is used per layer. This means the amount texture swaps is constant and based on the amount of layers in the map file. There’s a lot more I still have to do with world rendering.

What’s next?

Next thing I’ll go with is world collisions, both the client and the server will need to know about the collisions so I’ll have to load the map file on the server as well. I’ll also try adding world instances, for houses and such. These will be separate files which the server will tell the client to load.

Personal Update

I started working full-time on Facebook about 6 weeks ago and have less and less time to work on this. I think I’ll start logging development hours with RescueTime and posting them with each Dev Update to measure productivity and other cool stats.

I’ve made some progress on the client and I’ve already started the with the server. I’ve basically worked on 3 things on the client side. What I’ve got so far is simple, but well done.

  1. LibGDX general setup
  2. Movement/Controls
  3. Attack animations

Movement/Controls

Players can move in 8 directions, however the sprites only have 4 and this is fine. I’ve setup two controls types so far, PC and Mobile. PC players would move with WASD.  For mobile I setup a sort of smart joystick. The idea is simple, the joystick  follows your finger if it moves to far and can be placed anywhere on the screen. This allows easily moving your character on the opposite direction even if you’ve moved your finger further than the original location. Also important, the joystick will actually be invisible avoid screen clutter.

Attack Animations

Currently to attack you simply have to press the right side of the screen but will probably change. I’ve setup the attack animations in a way that I can easily add new weapons(such as an axe, fire sword, etc..). I’m also playing around with a bit of inertia on your character when you attack. This will probably not be in every normal attack, but might be part of an ability later on.

What’s next?

Next update will probably be about server and client communications, basically adding the multiplayer.

When I started to make the blog for my game I decided to make a logo for it. This is the first official version of the Clash Legacy logo.

Time Fantasy Sprites

Now, I’m not a real artist so I actually used what will be the game’s tileset to make the floor. I bought the sprites from http://timefantasy.net/. They make a bunch of goodlooking spritepacks and setup a Patreon here. Given my limited resources I plan on building up new sprites from these ones. For example, the character sprites from the pack do not meet the full requirements I want for the game. So I’ll build new ones based on those.

I actually bought the sprites a while back during a summer sale thinking they might be useful eventually (hopefully I was right ), so I might’ve saved some money here.

I made the logo with the idea in my mind that I could change the background sprites as I wish. For example if it’s winter I’d have the winter tiles background, or during a dungeon update or something I could easily change it like so:

Clash Legacy Alternative Logo
Source Amount
80+ RPG Characters Sprites $ 15.00
Winter Tiles $ 2.50
Animals Sprite Pack $ 2.50
Monsters Time Fantasy RPG Sprites $ 5.00
Fantasy RPG Tileset Pack $ 7.50
Total $ -32.50

Some of the most interesting projects I’ve worked on have been personal projects. I’ve set myself a goal to develop a Roguelike MMORPG game. I’ve taken it to be a serious hobby that I’ll work on with my free time.

About the project

I’ve written many of the features that will define the game and allow it to stand out from other games in the genre. I’ll reveal many of the features later in development as I get closer to them.

Here are some the games I’ve taken inspiration from:

The Road to “Game

To start off I’ve started laying out what the game will consist of. Its gameplay, mechanics, online aspect, business, platforms to support and visuals. As of this moment I have a general written idea of all of this things. As I’ve mentioned before I’m making a Roguelike MMORPG. The main aspects I’m taking from the Roguelike genre are:

  • Permadeath with some progression
  • Procedurally generated content.
  • Fantasy universe

I plan on mixing these with some MMORPG aspects and will talk about it more as I move on with development.

Once I had defined all of those aspects to a level I’m happy with, I started looking into what framework/engines I’d use. I settled with using the same framework we used with Rucoy Online. So there’s 3 main things I need to build. The game client, which is the applications players will use. The multiplayer server, which will keep in sync all connected game clients. And the database server, which will keep player progression data and more.

LibGDX for the game client
A free cross-platform open-source feature-packed Java game development framework. One of the most popular frameworks used by indie developers. LibGDX allows low-level control of many aspects of a game. Given my experience with it in Rucoy Online it makes a good choice. However, it’s not perfect. iOS compatibility is shaky and occasionally unstable, but it does work. I plan on using Multi-OS Engine to support it from the get-go and try to focus on primarily developing in an iOS device.

Go for the multiplayer server
Made by Google. “Go is an open source programming language that makes it easy to build simple, reliable, and efficient software”. Its simple concurrency makes it a good choice for a game server.

Ruby on Rails for the database server
Given my past experience with Rails this is a good choice. Rails will allow an easy setup for any administration dashboard I might need to monitor the game servers status through HTML.

So far all of these are free to use by anyone so there are no expenses in the development.

GitHub for project version control
I’m hosting my project files on private GitHub repository. At the moment my Student Developer Pack is still valid so I don’t yet need to pay a premium subscription.

Related to future posts

The frequency of posts will likely lower as I get more into the development. Hopefully a weekly, biweekly or at a worst case monthly update on the game.

I also plan on creating a “tools” post later on where I’ll list all of the programs and services I use for my development process or in general.


I’ve created this blog to document the process of the game’s development. I want to be as transparent as possible, documenting every success and failure.

Some developer blogs that inspired this one:

True Valhalla Blog

Blog Setup

It took me the better part of 3 days to setup the blog and it feels almost a project on it’s own.

Platform
I used WordPress as it seems the easiest to use and I want to focus most of my resources on the game’s development.

Domain
After a couple of hours of choosing a name and searching for an available domain I ended up with Clash Legacy. The most deciding factor was really the domain name availability and feel like I found a good one. I chose “Clash” mainly because it seems like a popular word for games and fits in the RPG genre. And “Legacy” is actually related to what the game will be about. So I bought clashlegacy.com through NameCheap.

Hosting – Update: Now using Digital Ocean.
I’m hosting the site with a NameCheap service called EasyWP. So far the service (which is in beta) is quite limited and there is essentially no flexibility the resources it provides. The reason I went with it is thanks to it’s cheap initial price.

Theme
After some deliberation I settled with the same theme used in Mirage Realm’s blog, Crangasi. I worked on modifying some aspects of the site including it’s colors and how the site resizes (responsiveness).

Comments
I replaced the default commenting system with Disqus service since it allows anyone to login and comment easily, is easy to setup, looks nice.

Analytics
Using Google Analytics, free and easy, just general site analytics.

Newsletter (mailing)
For mailing I’m using MailChimp since it’s free up to the first 2000 subscribers and there a tons of WordPress plugins that support it.
Note: as of this post I’ve yet to enable the newsletter