Over the last few days I've been intermittently working on game lobbies for Spellmaster II (and subsequently Intryon). Things are making good progress on this front - the lobbies are now almost completely functional!
Take a peek:
Everything you see here works. YEEEEEEEEEEE
The lobby browser isn't implemented yet though - I still have to do that part.
There haven't been any dev blog updates in a while, so I thought I'd post a quick status update to let you guys know what's going on in the world of Ginever software development!
For those of you who don't know already, in 2010 I wrote a small Game Maker program called 'Spellmaster' so that I could play the Magic: the Gathering card game over the internet with my brother without having to repurchase all of our cards in Magic Online (we initially tried with webcams but found it highly implausible). This program has come in handy for Intryon, because it doesn't have much game-specific code in it, so we've been able to use it to do Intryon playtesting and prototyping. Unfortunately, Spellmaster is extremely crude, slow to use, and still requires you to have physical cards in order to use it, which means it is not really viable to use it for a wide-scale test of Intryon gameplay mechanics.
Around 12 months after Spellmaster was created, we realized that it could be significantly improved, so I started working on an updated version (Spellmaster II). Sadly, it didn't get very far, because Trevor got everyone into Minecraft, so Spellmaster II got abandoned in order to focus on Asterion and Robbit.
Now that we don't have Asterion Minecraft any more, focus has shifted back to the world of card games in the form of Intryon. This serves the development of Spellmaster II really well, because there are a lot of similarities between Spellmaster II and the planned Intryon client. In fact, if we can get Spellmaster II working, it will be plausible for us to use Spellmaster II to do playtesting and prototyping for Intryon with a reasonably large test team. It also requires a lot less work to get running, and the crossover allows us to reuse code from Spellmaster II in the Intryon client and server code when we eventually get around to writing that. It therefore makes sense to work on Spellmaster II first and fork it to create Intryon when we're ready to do so.
Thus, everything you see happening in Spellmaster development is directly related to Intryon because a lot of it will simply just be copy-pasted into Intryon and then tweaked as needed.
With that in mind, I've been trying to focus on writing portions which are common to both games. A lot of this code has gone into jGinENGINE, which is a custom games engine that we developed internally. It will be used as the backbone for both Spellmaster II and Intryon going forward.
Anyway, here's a summary of what's working so far!
Integration with GineverAccount
The games engine now has integration with GineverAccount. When you log in with the GineverLauncher, your user session is carried over to the games that you launch and they can use your login token to authenticate you against the servers for that game. Here you can see that my login details carry over from GineverLauncher to Spellmaster II along with my user picture, donation status, rank, country of origin, etc:
This might not seem like much, but I'm very happy with the progress here because now the GineverAccount just became a lot more useful
Chat and social features
The social features in games like Intryon are very important and help to strengthen the community behind the game. The friends system that was recently introduced on Ginever.net has therefore been completely integrated within Spellmaster II, and this will be carried over to the Intryon client as well.
At the bottom right corner of the screen is a social bar which gives you access to your friends list and chat services. From the friends list, you can see all the friends you've currently got, along with which of them are online. You can also approve or deny friend requests, delete friends who you might suddenly hate for whatever reason, and start a private chat with any online friends.
A user search function is also included, so that you can look for other people you might be friends with in order to add them to your friends list. Here you can see I tried to search for @Paulicus25 and I found him successfully!
The chat interface is working really nicely too. There is a public chat room (which is accessible to everyone) and you can also start one-to-one conversations with your friends if you want some privacy:
When you get a new message, if you don't have the chat box open, it flashes orange and makes a dinging sound to get your attention:
The attention works differently for the public chat. Since in theory it would be very busy and thus dinging non-stop, the decision was made to only flash/ding if your username gets mentioned. Thus, if you see it flashing, you know someone's talking about you or trying to get your attention.
I have also implemented little toast notifications, which show when your friends go online/offline or you get sent a friend request. These toasts appear above the social bar and disappear automatically after a few seconds.
If you don't like the default behaviour, the social system comes with a settings page so you can customize what happens for different events. For example, you can disable the ding sound, hide the toasts, or choose to ignore the public chat entirely.
We want our games to have a chance of success in other countries besides those that speak English. For this reason I spent a decent amount of time implementing full localization support in jGinENGINE. You can now change the language on the fly, and the game will translate itself in front of you.
Want the game in Italian instead? No problem - we've got you covered there.
There is a translation website over at https://translator.ginever.net/ where people can submit translations in many different languages. Right now you can translate Whack and Spellmaster II, but more games will follow in time. The Italian translation shown above is being provided by @luckcolors, who I'm very grateful for - with his help, I'm able to fully test the in-game translation system with legitimate data, and I'm hoping to have an Italian translation of Intryon when it rolls out to the public. Other languages will probably follow.
This week I've been working on the in-game deck editor. Through this you can build decks for playtesting. At the moment, it supports all cards from both Magic: the Gathering and the Intryon alpha series. Here's a screenshot of the deck editor in use:
At the top of the deck editing screen you have buttons to set the resources. There are also the normal deck management features such as adding/removing/copying cards and decks, re-ordering the cards in a deck, etc.
If you're building a Magic deck, the resource buttons are replaced with buttons that add random land cards of each type:
Currently only a text-based card search is working. In the future I am thinking of adding a filter function so you can search for cards based on their properties. I'm not sure when this will be implemented so there is simply a placeholder button on the GUI for now.
Some of the custom server code from RobbitServer has been ported to GinENGINE and is now used in the Spellmaster server core. I also took the opportunity to implement jLine which greatly improves interaction with the console. Here you can see the command system in use, taking advantage of jLine to interleave command input and text output:
The crash and freeze recovery system from Robbit was also ported over. If the server crashes or freezes, it will shut down and recover automatically.
All of the traffic between the client and the server is now secured with SSL sockets just like the website, because we don't want the nosy NSA or GCHQ spying on stuff... although they will probably find some way to do that regardless BUT AT LEAST WE TRIED YO
Progress with Intryon card development
There is a third Intryon deck currently under development - the starter deck for the Mirali. These guys use crystals as their primary resource and are the only race with Self Repair and Multishot. The cards also have an interesting mechanic through the form of Mineral Fields, which are playable from your hand and provide bonuses to various cards in the deck.
Unfortunately the balance is still messed up with these, and I'm not happy with the card naming, so I'm not comfortable revealing much more at the moment. Once we're largely agreed on the make-up of the deck, subscription holders will get a sneak preview of some future cards.
The new Discord chat server
We now have a public Discord server! This is kinda like Skype or Teamspeak, only not shit. Anyway, everyone is welcome there. Just click the link in the header in order to hop in and join the conversation. We would love to hear from you!
What to expect in the near future
Over the next few weeks I will be working on fixing engine bugs and implementing the lobby system. This is quite a lot of work, but it's the first step to making the game playable. I will try to post updates on this so you can see progress as it's being made.
Hopefully there will be some more artwork from @Medessec soon-ish too.