Here you will find the current status of the project. Expect written updates biweekly.
Last year, there were various issues that could not be resolved in time. It was a team effort and now I am the only member that shall be contributing to this project to hopefully get it to a working state. My responsibilities last semester were the layout of the overall site and the user interface, not the battle system which is currently in ruins. Apart from the functional chat room and direct messaging, the current battle system is not in a presentable state.
After some struggling of how to represent the card database, I reprensented the cards as an entry JSON array and did the collection insert right before a game begins. This gets around the unique id problem that I kept running into as Mongo does not allow multiple documents with the same identifier. Currently, the battle system is functional, and subscriptions afre reflecting card changes appropriately. I deployed it to heroku for some real testing and noticed the load times are much slower compared to running it locally. Caching the images before entering the duel helped increase performance.
For this Milestone, I was not very productive in making progress on my Naya draw functions. I had looked into “foreign keys” to get an understanding of how to integrate relational databases, but ran into some problems during integration. I had trouble trying to get the right syntax for mongo sample aggregation and inserting objects with additonal fields. Improper usage led me to experience a “Range Error: Maximum call stack size exceeded.”
I have spent a lot of time working with the CollectionFS package in meteor to store the binary images of cards in a deck on the server and then have the client download a copy of it onto their system when they want to use it. After a meeting with a professor experienced in database management, I realized that I could get away with just modfiying the image src paths to display them. However with this approach, I am currently stuck on how to draw a random entry from the collection. I discovered that in Mongo 3.2, a new operator $sample was introduced, which could return a random entry from a collection. However, I would need to remove the card after to prevent it being possibly selected again. Removing it would then affect the main server database that is shared amongst users. My professor also talked to me about foreign keys, and maybe integrating that with my json objects to build a relational database using user ids which I am currently looking into..
I finished my issues earlier than my other teammates when it came to the final deadline at the end of the year. As a result, I am unfamiliar with the final code merge state of the project and have ran into many issues that were left unresolved due to no time left. Visually, everything seems okay, but with light use, things began to fall apart. I have been trying to familiarize myself with the changes that have been done by comparing commits done by my past teammates and the little documentation has made things much harder. I am still trying to salvage what I can, and have been considering reverting to the last merge to master done by me and starting over from there instead of trying to debug unfamiliar code. The main black box component that has been introduced since my last code contributions was the installation of several new Meteor packages known as CollectionFS. Through some research, I found that it was a way to serve dynamic image collections to unique users, but the implementation was very incomplete and has introduced a Bcrypt Issue that I still have not solved yet. I managed to resolve the animation issues of page transitions, but there are still overflow issues in the tutorial pages if all dropdowns are expanded. I plan to focus my efforts on getting a functional card playing system, with aesthetics and robustness of error handling being on the backburner for now.
Check out the project homepage for more information.