Close

2017 Technical Exalted Interview

Sep 7, 2017

Last Friday we announced this year’s Technical Exalted—Bogycoins (IGN: Romichete)! As the creator of hex.tcgbrowser, Bogycoins has been instrumental in creating quality tools for our community. Today we are pleased to share a few words from the man himself:

Technical Exalted

So, how does it feel to be this year’s Technical Exalted? What was the first thing that went through your mind when you heard?

It feels awesome! I’m very honored and proud to be given this title. When I first read about the program update I hoped I would be picked, and although there are many valorous people in the community that build all kind of cool stuff, I felt I had good chances to be chosen (the support from community contributed greatly to that feeling). So when I checked the Friday update and saw the announcement, I can’t say I was very surprised, but it felt really good! Thank you!

How did you first get involved in HEX? Tell us your origin story.

I always loved card games. I played them since I can remember. Not TCGs though. The first and only one before HEX was WoW TCG. I was playing it very casually with some friends and my wife, as there were very few people playing in my town. But then I found about the HEX kickstarter on the old WoW TCG forums. After I read the first couple of lines from the description, I knew I had to back it. It was exactly what I needed. A TCG I could play whenever I wanted that also included a PVE part and was created by Cryptozoic. It was perfect. And so I did! I can’t remember what my first pledge was, but I know that I increased it several times. When I finally decided to get the Pro Player it was gone, so I settled on Dungeon Crawler. Thinking about it now, I’m kinda sad I didn’t go higher, but well..this is life, you don’t always make the correct choices 🙂

What is hex.tcgbrowser? What made you first decide to start making a community tool?

TCGBrowser is a lot of things; depends from which side you look at it. For most people, it’s a web application with a lot of features, like card and equipment databases, collection management, deckbuilder, match tracker, a trading post and many more. For me, it’s my main hobby and where I spend a lot of my free time. Whenever I have some time, I tend to open my IDE and start fixing bugs, improving the code, or working on some new feature rather than playing HEX… it’s weird I know 🙂

TCGBrowser has a long history, well before HEX. Originally, I created wow.tcgbrowser.com which was a card database for the WoW TCG… I think it was in 2009. At that time, there were very few databases for it, and the ones that existed were very light in features and looked like they were built in the 90’s. Also during that time, I stopped playing WoW after some years of hardcore raiding and had a lot of free time. As one of my passions is to program stuff, I decided to create a faster and nicer looking card database myself and learn some web technologies in the process. Over the years I’ve added a lot of features, and the site evolved from a simple card database into a complex application that was one of the most used resources for WoW TCG players, I would say.

Fast forward to 2013, I think it was about the same time when WoW TCG stopped development and HEX kickstarter was announced. While I was sad to see WoW TCG go away, I was excited about HEX and I knew that it will need a proper database. Since I was happy with the site I already had, I decided to keep the core engine and functionality and build the new page on top of it. I’ve started porting the WoW site, dropping features that weren’t needed, and writing a big list of new features that I planned to add.  And so, in couple of months, I released the first version of the site that had only the card browser with some filters. For a while it was just that, but behind the scenes I was working on more features like the deckbuilder, options to display EA versions or the double back, etc. When the game was released in Alpha, I finally got a real feel for HEX and this helped me focus on what features I should really work on. Until then, all my work was done based on what I’ve seen on Kickstarter and what I expected would be needed from my previous experience. Feedback was also coming from people using the site in the form of suggesting new features or providing bug reports. Slowly, I started to release more and more features, and I’ve never stopped since then.

What feature are you proudest of on your site?

That’s a hard question, there are a lot of features I like. Pretty much all of them, actually 🙂

I think one that I really love is actually the first and most important feature, in my opinion—the card browser itself. It’s really fast, and you can easily find any card with the help of filters and the search box. The way I implemented this is that the basic information for all cards is loaded right at the beginning. That allowed me to create filters for basically anything related to a card, and those filters were very fast because all operations were done on the client, so there was no need for server requests which would have increased the loading times.

A special mention goes to the Trading Post, which proved to be a very helpful tool in building up my collection.

I also loved working on the Talent Calculator, which was challenging as it uses a completely different framework that I never heard before I started working with it.

And then there is… OK I’ll stop, let’s move to the next question.

Do you have any cool war stories? Was there a feature that caused problems or was more difficult to set up than you anticipated?

Not sure if they are cool stories, especially for the non-technical people, but I had problems with many things. One memorable thing is the ‘Collection’ filter in the decks list. That filter allows you to filter out decks that you can’t build with the cards you own. Basically what happens is, I take all the decks from a certain interval and, for each one, check if all cards exists in the user’s collection. It was really tricky to write the database query for this so it’s fast enough but doesn’t choke up the server. I spent many hours thinking, reading about database optimization, and rewriting the queries, until I finally found an acceptable solution. I’m still not 100% happy with it—it’s not as fast as I would have liked—but for now I’ve decided it’s good enough. I will probably pick it up again at some point and try to improve it more.

Pretty much a similar problem was with the Trading Post. Cross checking a wishlist/tradelist against several thousands of other tradelists/wishlists proved to be quite challenging. For a good period I had the feature in place, but I was unhappy with it as it was really slow. After a while I found a mathematician who, although he had close to zero knowledge of programming and databases, came up with a solution that really helped speed up the entire process. The idea was to replace the complex SQL query I used with a simple arithmetic operation. So what I do here is, first of all, save every whishlist/tradelist separately as a big string of 0s and 1s (and keep it updated). I take all collectible cards ordered by id, and for each one that exists in the list I put a 1. If it doesn’t exist, I put a 0. Then, if someone is looking for possible traders, I just take his wishlist string and do a bitwise AND on all tradelists and viceversa (his tradelist against all wishlists). If the result for both checks is bigger than 0, it means that at least two cards were found found in both lists, so that’s a possible trader (user 1 has card A in his wishlist and card B in tradelist while user 2 has card A in this tradelist and card B in his wishlist). This method proved to be super fast compared to what I previously had. It was something like

What feature do you think has been the most popular in the community? Why?

The card browser. I think most people open the site to look for cards in the first place. They want to know or just remember things like description and stats, prices, or price evolution. Maybe they want to setup some filters and check the results for some deck ideas, or maybe they just browse through cards looking at the gorgeous art. Whatever the reason, the card browser is the first stop for almost everybody.

Do you have any new features planned for hex.tcgbrowser?

I always have something in my backlog. Many times I take suggestions from people or I just think of something I’d like to use and start working on it.

Right now, one of my top things is to finish with the implementation of Ladder Decks. Currently, I’m aggregating all variants of a deck into a single line which displays the number of plays/wins in a period of time. I want to add a way of displaying the variants of the main decks as well as some kind of chart that shows the evolution of the main decks over time. Maybe best/worst matchups as well.

Another thing that I have planned for quite a while, but haven’t had the chance so start on, is a method to update the card amounts (need, collection, wishlist, tradelist) in bulk based on filters. That’s something I really want to add as soon as possible.

What Exalted Gift would you like to give to the community? 

My gift to the community is the Shards of Fate pack. I know everyone wants their chance to open a Zodiac Shaman!

OK, I’m kidding. I love the art in this game, and the sleeve looks so good and unique. It was an easy choice for me. I’d like everyone to get the ‘THE MOON WILL AVENGE US’ sleeves.

THE MOON WILL AVENGE US

Any last words?

I want to thank Cory and the entire team for creating this awesome game and indirectly giving me the chance to develop my programming skills.

Finally, a special thanks goes to Chris Woods! A lot of features wouldn’t have been possible without his API. He is always extremely helpful and receptive to suggestions and improvements, and he has a genuine interest in helping me and others in developing our tools.


Got any questions? Want to chat with other players? Then discuss this article in our Forums! You can also follow us on Twitter, Facebook, our YouTube channel, or enjoy regular streams on our official Twitch channel.