As avid gamers ourselves, we often found ourselves falling victim to two things: burnout when it came to certain video games, and a toxic cycle of banter and occasional aggression with each calling himself a better player than the other. It was due to these two things that we decided to innovate a solution which both, rewards the player by ensuring an increase in skills as a consequence of playing more, and also providing a definitive answer to the question of who is the better player - at least for the duration of the chosen competition. Through a mutual competition of shared statistics, players will always be on their toes, spurred on by their friends and rivals, to not only continue to get better and have better statistics than their opponents, but also continue to be involved in playing a wide range of games and channeling their energy towards a positive and tangible direction as opposed to wasting their energy in flaming, griefing, or any other toxic actions.

What it does

Project Titan incorporates a variety of popular games of varying genres on its platforms which the user can select or deselect to introduce them onto their individual home screens. The program links with the users unique Steam ID and friends, displaying a skill level for each one that is calculated by a variety of factors that chiefly involve their statistics as compared to others. These statistics can involve factors such as kill to death ratio (KD), total contribution in round wins etc. The user can start a 7-day competition with their friend or an individual in their vicinity that shares similar skill levels as them. The player with the higher amount of points at the end of the week wins the competition and receives a set of reward points. The player who loses the competition can then look at ways to improve themselves in areas that they fell short in during the competition and come back strong to defeat their opponent.

How we built it

Project Titan is built mainly in HTML and javascript. The website was designed and is built from scratch using HTML and CSS. We built several example pages using HTML and styled them using CSS. The backend consisted of python scripts that were designed to run from the HTML webpage but ultimately was converted into a javascript equivalent due to the challenges associated with running a python script from an HTML page

Challenges we ran into

There were many difficult and monumental challenges that we faced during our journey. The project initially began taking form as a Java application yet when we realized that HTML development was visually superior and more convenient than creating a Java UI, we switched to HTML which we had no clue how to do. The entire project nonetheless was designed in HTML on the frontend. For the backend, the biggest challenges were how to get the stats for the many different games that were included in the platform. Initially, python scripts were used to be able to manipulate information and use APIs, like the Steam and Riot API. This proved to be impossibly difficult to run from the HTML page as it involved the use of either CGI or Django or Flask some of which were somehow involved ultimately but very difficult to navigate and so everything was then changed to Javascript which we knew nothing about. Finally, the challenge was to then parse the JSON objects that the API returned with 100s of unorganized parameters of which we decided to only use a few. The challenges were innumerable in this project but we continued to learn and employ new technologies and solutions throughout the way.

Accomplishments that we're proud of

Due to the large scale approach of our project. and our foreign inclination to many of the technologies we ended up using, we are very proud of the eventual stable product we managed to create. Members from our group ended up learning 4 to 6 more technologies than we had started out with. We are very proud of the fact that we were able to create a system where our program has the most up to date statistics due to the fact that it instantly pulls the most up to date and precise stats to the 9th decimal place seconds after the data is updated in the game. We are also proud of the fact that we have begun a service like no other where users are motivated to get better and play based off of each other.

What we learned

The world of APIs are not always as simple as one would have thought. There are API Keys that most sites require to be allowed to use the pertaining APIs like steam, there are certain oddities and compatibility issues that are present among the APIs of different game products. We learned that running Python scripts from an HTML button is extremely hard without the introduction of a server. We also learned that many companies dont even offer APIs and any way of easily accessing data as a 3rd party. We learned many ways of building webpages with HTML and the Grid Layout, and we learned how to embed executable javascript in HTML pages.

What's next for Project Titan

There are many things that we are looking forward to adding on and further expand upon in the future. Some of these include adding more and more games to our platform which will result in capturing a broader audience and will introduce an opportunity for players to compete in an environment where they learn the game and improve themselves at the same time. We are thinking of creating an API for our own service so that eventually rather than us adding games to it developers will be able to connect to the service. We will also be adding rewards for players winning a competition, these rewards will include the ability to purchase in-game items and gift cards. Players will receive in-game currency that they can use to purchase their favorite skin as well as have the option to redeem their points for unique badges in the game. Releasing an API for developers for our platform will enable them to pre-select what statistics they feel are the most vital to a healthy competition between 2 players and will create a smooth experience for not only us as a team but for the customer as well.

Built With

  • css-html-javascript
Share this project: