main project image

Meta Fighter

A multiplayer 3D fighting game for browsers and mobile devices

project image
Client

Germany

Description

FTE game — 3D fighting game with NFT characters on the Binance Smart Chain network. The project offers the opportunity to play with basic characters, as well as to mint a unique character for oneself or stake (hold money for a specific period and return it to the wallet after expiration) one's own funds to receive NFTs after a certain number of days. On the website, users can also sell their NFT characters, buy, or stake them for skills and boosters. All fighters have their origin stories, skills, and attacks. NFT of a fighter created based on a basic one can be leveled up based on its level, characteristics, and tier. The higher all the fighter's parameters, the more they can play against stronger opponents, deliver more powerful blows, and have greater defense.

What was the purpose of this project

We developed a web platform, a browser-based and a mobile game. As part of the web platform it was necessary to develop authorization of the user by their crypto wallet, so that they could mint NFTs, sell and buy NFTs, stubs and MF tokens, as well as transfer their MF tokens to their spot wallet to play in FTE mode.

What challenges we faced
  1. Multiplayer game development for Android and iOS browsers and mobile devices
  2. Development of smart contracts and publication of smart contracts in Binance Smart Chain
  3. Development of scripts for launching smart contracts functions
  4. Server customization
  5. Backend Development
  6. Development of event detection service
  7. Web site development with authorization via Metamask and WalletConnect, marketplace, leaderboards, steaking and claming of MF Tokens.
  8. Development of concept art, illustrations, characters, 3D modeling, animations
  9. Web site and game prototype and design development.
  10. Copywriting
  11. Balancing the system of pumping characters
Technologies

Development: Unity, Nuxt.js, PUG, CSS, Python, Solidity, Binance Smart Chain, Amazon EKS, Machinations
2D: Adobe Photoshop, Corel Painter
3D: 3d studio max, Autodesk Maya, Substance painter, ZBrush
Animations and special effects: Autedesk Maya, 3ds Max, Unity

project image
project image

Game Modes

The game has three modes:

  • F2P (Free-to-Play)
  • F2G (Fight-to-Gain)
  • F2E (Fight-to-Earn)

    In F2P, players can play with their NFT or basic characters.
    In F2G, players can only play with NFT characters, gaining experience used to level up the character.
    In F2E, the game involves gaming tokens.These tokens can be purchased or withdrawn from the user's spot wallet.

    A game where you experience thrilling 3D NFT fights and earn on Binance Smart Chain!

    project image

    Project Structure

    The project presents a smartcontract, backend and client interaction system. Backend is developed on the basis of microservice architecture, consisting of matchmaking service for multiplayer game, Blockchain event detection service, socket service for battle control and fair determination of the winner, as well as several services providing the basic logic of the project.
    The client of the project is a website and a game, also integrated into the web site. The website presents the logic of user interaction with MF tokens and NFTs, which the user either mined or bought in the marketplace section.
    project image

    Development Process

    This project was conducted with a mixed use of two approaches Waterfall and Agile. Initially, a lot of work was done to develop the terms of reference and build the project architecture. For this phase, experts from backend, frontend, game development, and a smart contract developer were engaged. After compiling the documentation, architecture and prototype, the works on creating the design, game graphics, as well as parallel development of 3D characters for the game were started. In parallel with these works there were researches in the field of selection of tools necessary for realization of future tasks, coordination of design and graphic materials with developers.
    Only after the graphic materials became 10% and the site design 20%, the development of backend, frontend, game and smartcontacts was started. Every month 5 departments (art, backend, game, frontend and blockchain) collaborated daily and solved the tasks of this project.
    project image

    Authorization

    For full use of the platform on the website and in the application, authorization is implemented through the Metamask browser extension or Wallet connect, which offers several cryptocurrency providers at once, through which you can authorize in the system. Before the user authorizes, he can get acquainted with the project on the homepage, browse the marketplace with NFTs for sale, and play the game for basic characters.
    project image

    NFT

    After a user authorizes on the site, he can mint himself an NFT by accessing the smartcontract, and after a while, he can see his new NFT in the My NFT section. Each NFT has an index in the blockchain, character type, unique color scheme (which is formed from 5 layers), 4 characteristics (attack, stamina, speed and defense), level, rarity, and some other attributes. As the user plays for a given NFT the user will earn experience, and thus increase the level of the NFT fighter. After each level up, points are awarded that can be used to increase the level of the NFT characteristic. At every 20th level there will be an increase in rarity.
    project image

    Marketplace

    You can place an NFT fighter for sale or buy an NFT fighter on the website. When these actions are performed, the web client accesses a special smart contract that trades NFTs. If the user does not want to keep their NFT for sale, then they can cancel the sale and return the NFT to their wallet. If the user has put the NFT up for sale, then they can continue playing for it as well as upgrading and improving it.
    In addition to NFT characters on the Marketplace you can also buy boosters to earn experience. The more NFT gains experience for each battle, the faster his level grows, and accordingly, the faster the points to pump characteristics.
    project image

    Staking

    In Staking, a user can stake (freeze) their funds, for monetary or digital profit.
    There are 4 types of staking:
    1. For experience boosters (given out immediately for 30 or 60 days, after which they burn out and the money becomes available for refund)
    2. For NFT characters (after 7 days you will get a free NFT of a certain type and the money will be refundable)
    3. For Skills (given out immediately for 45 days, after which the skill burns out and the money becomes available for refund)
    4. For MF tokens (works like a bank deposit with rates from 2.5 to 128% per annum)
    project image

    Claiming

    This section was released one of the first during the development of the project, in order to build trust with all the people involved in this project. At this point, 2 smart contracts were also released - one of the token itself, the other just to distribute a portion of these tokens to different pools of investors. This section still allows branding of reserved tokens to all crypto wallets that have been added to the vesting pool. Many times we had to change the investor pool or remove some wallets that decided to withdraw from the token distribution. Twelve pools with different token distribution scenarios were implemented. There were both gradual issuance and calendared issuance among them.
    project image

    BlockChain event detection service

    Initially, the Moralis service was chosen as the solution to this problem, as it was the most suitable in terms of stability and functionality. After some time, this service changed its rules of use, as well as the API of interaction. In this regard, it the decision was made to implement the service of catching events from scratch, which allows you to go through all the blocks in BlockChain, which have a connection with the addresses of our smart contracts, and catch events there. The balancing of this service was handled by a separate service, which raised the necessary number of event catching services on the server to speed up block monitoring.

    What stages of game creation did we go through?

    project image

    Structure

    The entire game consisted of:
    • Main screen - the map, which had a GUI to navigate between the customization screens, leaderboard and MY NFT, as well as arenas that could be navigated to for battles
    • A mode selection screen where the FTP, FTE, and FTG modes could be viewed and selected
    • A character selection screen where the user can choose who they will play as Lobby screen where players meet each other
    • Lobby screen where players meet each other
    • Battle loading screen, where all the necessary resources are downloaded before the players find each other
    • The battle screen, this is the battlefield itself
    • Win/loss screen
    • Leaderboard, a table of leaderboards for various condition
    • A list of the player's available NFTs, where you can pump up your character or add boosters to it customization screen

    Sound

    Unique sounds and music were recorded for the game by the composer and sound designer, who also integrated and customized them using the FMOD utility. Due to more than a thousand different possible kicks of the fighters and therefore the impossibility to make a sound for each kick (due to the limitation of the web build), the sounds were written in a generalized way for the categories of kicks.
    As a style of music we decided to use combat and modern music to emphasize the uncompromising style of the game.

    Arenas

    There are 6 arenas in the game - Sky, Winter, Dream, Sky, Japan, Dark Feature, City. Each arena has a unique concept, all textures and lights have been worked out. Each arena has been optimized and all advertising points in the arena have been coordinated with level designers.

    3D Graphics

    The approach to 3d graphics was divided into 2 components - fighters and arenas. Each fighter was created first on the concept from the artist in ZBrush in the form of a highly polygonal and elaborated model, then transferred to one of the programs working with 3d graphics (Maya, Max) and brought to the game model. This approach allowed to achieve high quality models of fighters in the game with a small number of polygons. Also there were certain works with materials to achieve maximum quality.
    3d models of arenas were created according to the artists' concepts. They consist of two types - general and game. The general one is needed for camera flying at the beginning of the battle. On the first arena were tested all possible graphical solutions that can be used in the web, without significantly reducing the framerate. The other arenas followed the technical conditions of the first arena.

    Special Effects

    There are FX special effects in the game - special effects for character kicks, super kicks, and on locations. FX special effects are unique for each blow, created by FX-animator on ready-made animations and then integrated into the game. About 150 unique FX special effects were created in the game.
    To create all the effects and animations of GUI elements, the motion designer worked out the animation concept first, after which the programmers converted the designer's idea into code.

    Different game modes implementation

    Within the framework of the terms of reference, it was necessary to realize 3 game modes - F2P (Free-to-Play), F2G (Fight-to-Gain), F2E (Fight-to-Earn).
    F2P mode is most popular for players who have not yet purchased their NFTs, and want to just practice in this game with bots and real players. F2G - here the player must be authorized through a crypto wallet and play as an NFT. PvP(player-vs-player) and PvE(player-vs-enemy) play is available, as well as 1vs1 or 3vs3. In PvP mode the experience point earning rate is higher than in PvE mode. Also in 3vs3 mode you can earn experience for 3 of your NFTs at once. In FtE mode a player must be not only authorized and have NFT on his wallet, but also keep credits on his in-game (spot) wallet, from which he will have to make a bet in the game. Each arena will have its own bet. The player who wins, takes all the prize minus 10%, which is taken by the platform.

    Networking

    In addition to the basic data requests for the user, we implemented:

    • A separate player selection service that allows to distribute players by rooms, arenas and regions
    • A socket service for controlling the battle and issuing its results
    • Blockchain event catching service
    • Leaderboard player counting service
    project image

    Anti-cheat

    As an anti-cheat, we have developed our own battle control system, which allows us to accurately determine the winner and loser, transfer the reward to the winner, or distribute the money in equal proportions, in case of a draw. The whole system is realized with the help of encryption, which provides reliable data transfer between the client and the server.

    Game optimization

    One of the most challenging tasks was the realization of a 3D fighting game on the web. Due to the limited resources provided by the browser, it was necessary to optimize all graphics, as well as its loading, regular memory management. After the sources were optimized for WebGL, it was necessary to change this method of data preloading and adapt all resources for use on mobile devices - shaders, 3D models, light and much more

    Protection and blocking from various DDoS attacks

    Throughout the development of the project, 3 attacks of attackers were reflected. For protection we used Cloudflare, Cloudfront, and a load balancer in AWS architecture. Also, as a defense against cheating, a battle control system was developed, covered with encryption and controlled only by the backend.
    ballletter
    orange