Sylvi PNO
(All Content included in this page is accurate as of 24/03/2025)
Sylvi PNO is an screen based - image detection automation tool for the 'PokeNexus' Pokemon MMO game developed using Python. The tool is currently in an 'early access' phase and is actively being worked on myself.
The application makes use of libraries such as:
Key Features
Login System with Database Records
The Bot start with the user required a set of credentials to log in to the program and gain access. The credentials are passed through some authentication logic which connects with a google firebase database the check the credentials are valid, the user has a valid amount of access time remaining on the software and that the number of active logins using those credentials are within specified limits.
If either the credentials provided are invalid, the user has no access time remaining or the user is has exceeded the amount of simultaneous login they are allowed to have at any given time. the software will prompt the user to contact the distributor of the software (myself) in order to correct any issues or to extended there usage time for the software.
Image Detection and Image Reading
The core area of the bot is the use of Win32GUI, TesseractOCR and OpenCV2 to read in screen images in real time, detect certain sections of the screen detect a variation of text or images to read in data for the bots operation.
Three examples of this can be seen in the screenshot above where the name of the enemy, and the enemies health and the current turn number are all read in using Win32GUI to get the intial screen view, then OpenCV2 is used to detect the correct sections of the screen (red, blue and green boxes) to read from. Following this TesseractOCR is then used to read the text on the screen and get the correct values using a combination of filtering and image adjustment.
Team Selection and File Saving System
Once the user has logged into the software they will be presented initially with a home screen with a button containing the text 'Start'. If this button is pressed the without a team selected, the user is prompted to move over to the 'Team' tab where they can specify their completed 'team' and respective information and values regarding that team.
The team screen consists of 2 main sections : The information selection section and the file selection menu. The information section is, as stated above, an area for the user to select a replicated version of their 'Pokemon' team that is being used within the PokeNexus game client. This section is comprised of 6 copies of a custom widget called 'PokemonWidget'. This widget contains a total of 5 drop down menus and 4 entry fields. These menus / fields allow the user to select a pokemon, 4 moves and enter the corresponding 'PP' values for each of the selected moves.
The other section of the team selection screen is the Team Selection drop down menu. In this menu the user can select from 2 types of options: 'Team X' or 'New'. 'Team X' is an option that will appear when a user selects the new option enters all relevant details into the information section and then hits the save button below. A file is then generated locally that stores all of the data from the information section is CSV format. This can then be re-read in for later use. The 'New' option, as mentioned above, is an option that allows a user to create a new team and then save this team for later use.
Learning Points
There are 3 main areas in which I felt like I have most improved so far in the creation of this project. The first of these areas in the implementation and understanding of server-side authentication. The login system for Sylvi BTB was my first experience with server-side authentication systems within software development. Although there is still a lot for me to learn in this regard I believe I've already gained a considerably stronger understanding about not just the implementation side of login system and authentication systems but also practices that should be used and why security regarding these systems is so important.
The second area in which I feel i have made the largest amount of progression is in regards to testing and the importance of thorough and complete testing of applications. Testing for Sylvi BTB was especially important given the nature of the software. With it being an automation tool, the tool is expected to be able to run in an isolated environment with little to no interaction once initial setup is complete. This means that once the user presses the start button, there should be no crashes, errors or issues arising during the runtime period of the software. This meant that a large volume of testing had to be conducted for each and every aspect of the software to ensure perfect functionality.