The May was full of connections with the community, receiving valuable feedback and making improvements to our zkApp. It started with the first public testnet, which involved more than one hundred participants. This event gave the team the opportunity to take a fresh look at architecture and UI/UX. The community helped us to identify mistakes and improve the gaming experience in Arkanoid, Randzu, and Thimblerig games. If you want to learn more about the testnet’s statistics and user feedback, please check out our article on Medium, “Summing up the Testnet.”
Now, let’s move on to a full list of May’s updates in the backend, frontend, and design.
Updates
Bugs Fixed
During and after testnet developers was fixing bugs to improving users game experience.
In Arkanoid the collision mechanism in the game backsides has been updated and performance improvements were made to play with no lags and delays. We also found that the game field was not resizable enough and some players had problems with that, now we implemented a resizable field and now it doesn’t matter what the resolution of your screen is, the game will always look great.
In Thimblerig game unnecessary distracting pop-ups have been removed from the game and the animation of the game itself has been improved to be more interactive and fun.
The most significant and complex bug during the testing process was incorrect lobby creation. Many users were unable to find and play in the lobby they had just created, and the matchmaking system looked bad and failed time to time. For now all this mistakes were removed and you can play in each game without problems like this.
Development
Everyone in the project wants to keep up with modern technologies and solutions, so this month a major upgrade was applied to our project. Migration to protokit with o1js 1.1.0 has been done. To achieve this we needed to use an experimental protokit branch and moved towards local sequencer cloning and building on pnpm install command. Besides o1js version upgrade this allowed us to be flexible in framework bugs patching not waiting for the official release. Some protokit sequencer issues had been patched.
Optimization is knocked in developers doors, and team also removed a couple of small annoying problems:
- Problem with intermittent failed build on vercel has been fixed by disabling build cache;
- Persistent feature had been experimentally supported allowing to store project state in a database and prevent appchain data resetting on network restart;
- Optimized website rendering. Made blocks fetching hooks stateless preventing unnecessary components rerender on new protokit blocks pushing. Improved website performance, optimized components tree
- Implemented shim wallet connection. This way wallet window is not triggered if you open website you’ve connected before. Instead the connected wallet address is stored in localstorage identifying user and requesting to unlock wallet only when you send a transaction. This required support from protokit internals so we created a PR and applied the patch to the local protokit sequencer.
Visual
The application architecture and design is complicated and UI/UX designers need to regularly check their decision on real users and make corrections based on user interactions. After testnet based on more than 60 reviews, we have made some key and cosmetic changes to the application:
- The app has been redesigned with a new color scheme. Currently, the main page, favorites page, and lobby page are ready. Modal windows for “bridge”, “connecting wallet”, and “change network” are also available. Work on other pages is ongoing to make them more pleasant to use.
- Added pop-up notifications have been added that allowed the user to track currency movements, competitions creations, wins and losses, as well as other important events
- More detailed lobby creation and searching process (adding users states “already in lobby”, “matchmaking modal”, “Lobby not found”, “Private lobby badge” ). Added the ability to share your lobby by link copying and on various social networks in one click, now we support it in Telegram, Twitter, WhatsApp and Reddit
- Made responsiveness fixes. Now main store pages stretches and displays correctly for all the screen aspect ratios. Also design became browser agnostic.
- Improved input validations, all inputs and Date Picker on competition creation page correct and become intuitive and convenient to use.
Preparation to the Mainnet
The Mainnet is closer and closer…and ZkNoid wants to be the pioneer and deploy part of our products as soon as possible.
Research
We researched the L1 games we could create could create in short time and deploy on MINA ecosystem, taking into account the current state of technology in the ecosystem. And we decide to add a fun lucky Game — L1 lottery.
Team studied the most popular lotteries mechanics during the world and chose the lottery with tickets and numbers and development of game architecture.
The rules of lottery is:
Round Duration: Each round lasts approximately 1 day.
Ticket Purchase:
- Each ticket costs 1 Mina.
- Ticket consist of 6 numbers (1–9) and quantity.
- Duplicated tickets are allowed.
Winning Ticket reveal: Winning ticket revealed within 2 days after round ends
Claiming Rewards:
- Each ticket earns points: 0, 90, 324, 2187, 26244, 590490, or 31886460 for 0, 1, 2, 3, 4, 5, or 6 correct numbers.
- The reward is a share of the total bank based on points. Order of the numbers in ticket matters.
Refunds: If the winning ticket is not revealed within 2 days, you can get a refund for your ticket.
Platform Fees: A 3% fee is deducted from each ticket purchase.
Chosen technology
To develop L1 lottery we researched what technologies are needed to ensure the honest and fun gameplay without cheats. To choose the “win number combination” randomly in the lottery round random generation technology:
- Commit-reveal based random generation solutions. This is our own solution, which allows us not to depend on others, but it’s really hard to maintain.
- VRF от ZKOn. This solution potentially more secure and way easier to implement.
Design
The lottery will definitely have its own dedicated page in our app. At the moment, we have developed prototypes of the page, which include the user’s journey to purchase tickets, choose a number, and collect prizes won.
The full functionality of the lottery page you can check below:
Current lottery view containing the following
- Time counter
- Total tickets bought and the game bank
- Player’s bought tickets
- Buy button
- Button to go to previous lotteries pages
- Rules
Buy tickets view
- Blank ticket with the ability to fill the fields with numbers (Ticket consist of 6 numbers entered by players)
- Button to add the ticket
- Button to confirm the ticket buy
- Exit view button
- Button to randomize the ticket numbers
Previous lotteries list
- Show stats about bought tickets and bank
- The winning combination
- Tickets bought by user in previous lottery with correct numbers highlighting and reward size
- Claim rewards button if reward is available
- Switch to older or newer lotteries
Community & Events
We are constantly trying to find interesting and convenient solutions to our problems and are happy to find new friends during development process in the MINA ecosystem.
Communications
The picture below describe our connections with another apps and protocols.
This month we closely collaborated with Zeko network. Integrated support, added network to the networks switch and participated ZekoBoost program on the gaming track. Implemented and submitted a proposal for the next navigator’s season to implement L1 lottery game
Collaborated with ZkOn team. Planned their VRF integration. Discussed price feeds, data providing and proof of time implementation using MPC
Collaborated with Auro Wallet team discussing mobile support and token integration.
Connected with Staketab team who developed MinaScan where our project was listed. Received marketing support for testnet event
Started talking to Pallad Wallet team about their unique features integration to our platform
Events
- Was shortlisted for the grand prizes in Mina Navigators program. Prepared presentation and presented our project on the Mina team judges.
2. Made a strong connection with ZkOk team. Received marketing support and preparing to participate AMA’s Twitter space about ZK gaming with Paima studios.