MZ - Boss Arena

● ARCHIVED · READ-ONLY
Started by Wisepot 3 posts View original ↗
  1. Boss Arena

    Web Base Game made with RPG Maker MZ for Game Jam on Itch.io Page.

    ---------------- PLAY HERE ---------------
    Boss Arena by WisePot^ https://wisepot.itch.io/boss-arena

    Currently is No big story, its all about you start with player with some equipment and potions. And you go talk with Boss Arena NPC he will bring you to fight with bosses. After defeating them you get some loot, exp and gold. Sell boss items to Sell NPC shop.

    Go to shop NPC and buy Potions Equipment for your player and your team mates. After 5 Boss Defeated there is Emperor Boss, Defeat Emperor and you save your Friend who is capture by Bosses, and she will join you. 3 Girls will join you on your Boss Hunt Adventure, Every one of them have different Jobs - Like - Healer, Mage, Martial Artist

    After Defeating Talk to TOP 100 Player ranking NPC to check your rank among other player who are playing game.
    To make more gold - talk to BR-FIGHT NPC - He will let u fight with boss you already defeated in Boss Arena

    Your name is your id and your save file is only way to continue game or load game, if you loose it, you will start new game with New account or New name.

    Top 100 Ranking is Online from Worldwide people playing , so don't loose to any one !!
    How 2 Play small video

    [embedded media]

    ScreenShots -


    [ISPOILER]
    bs7.png[/ISPOILER]
    [ISPOILER][/ispoiler]
    [ISPOILER]
    TOP 100 Player Ranking World Wide
    b88.png
    Crab Boss
    ba2.png
    Boss Arena
    ba.png
    BR Fight NPC
    ba3.png


    [/ISPOILER]

    Thank you for your support.
  2. I have some feedback for you about this game, though perhaps not in an area you might expect ;)
    This might also be helpful to anyone else looking to add a global high-score system to their game.

    Feedback
    Let's talk about computer security! Now, I know the last thread about it got a little heated, so let me preface this by saying that I'm not accusing you of doing anything wrong. In fact I really appreciate you acting on the advice you've received back then! I just have some more advice that should hopefully help you improve further if you choose to. Some of that might be overkill for such a small project, but the knowledge might still prove useful for future ones.


    It's trivially easy to make a system completely unhackable - just don't connect it to the internet, and all hostile actions against it will be impossible.
    The difficult part of security is to allow some actions, while not allowing others. Or in your case, allow users to submit their scores and view those of others, but don't allow them to vandalise the database and delete other people's scores.

    The initial version of your database plugin had the rather notable security flaw of listing the database login and password as plugin parameters, allowing anyone to read them from plugins.js. This was not ideal, as the set of allowed actions for each user basically included all of them, including deleting the database completely.

    I see that you've since improved the way you're handling high-scores, by having a separate server that connects to the database directly, and having the game simply instructing the server what to do.
    There are, however, still considerably more allowed actions than there should be. Anyone can simply type https://www.trimitysolutions.com/databaseba.php?action=select_descending&table=ranking&column=boss_count into their browser to get the list of all scores directly. That's not really a problem, since it's meant to be public anyway, but they can also use the
    insert and delete_where actions just as easily (I won't list the exact commands here for obvious reasons, but they're no harder to figure out). Which not only allows anyone to not only insert arbitrary scores into the list, but also remove everyone else's scores.

    While you've delegated some responsibilities away to the remote server (that players can't control), you haven't delegated enough. There's no reason for the players to be able to request deletion of data, for example.

    So, how do we improve this?

    By delegating more responsibilities to the server.

    Instead of telling the server directly to perform a given action on the database, simply tell it what happened in the game. Have an action that tells the server which player defeated how many bosses, and get the server to update the database accordingly. And of course another action for registering a new user. And presto, nobody can just delete all records now!

    They can still increase the scores of other players though, since we don't check if they're increasing their own. So an attacker could just add random amounts of kills to everyone, which is an effect that's not far from deleting all data.
    A solution for that would be use secret user ids that we never show to the client - working a bit like a password. For each player, generate a long random string when they make an account.
    Each client remembers their own secret id, and sends it when they want to report increasing their boss count. The server checks if it matches, and only changes the score if it does. And when providing information about other players' score, it only returns the username and boss_count columns, not the secret ids. And presto, now we can only modify our own scores!

    Now, while a player can only modify their own score, they can still make it whatever they want. Fixing that would be... rather challenging. In a professional game, the client would probably send a list of actions they took in combat, with the server verifying if they should have resulted in the same outcome the client claims they did.
    For reasonably simple fixes, there really aren't any. You can make cheating harder - for example encrypting your game's code, or submitting the total amount of damage dealt in last fight (which the server would verify whether it matches the boss). But a determined enough cheater would still be able to get around that, just using more time.
    Though one rather simple fix is to reject all values higher than the number of bosses, so at least you won't end up with impossible scores on the leaderboard.

    There's also another problem - people can still create as many new accounts as they want, and setting a score for each one. You could have the server reject account creation for IPs of existing accounts, but that wouldn't stop everyone, and might annoy regular users who share an IP address.
    A better solution is to use a third-party service to handle account creation - they usually have plenty of anti-spamming measures against creating accounts en masse. Though that wouldn't let you have such a seamless account creation process, so it's definitely a trade-off.

    And another thing: while I don't know how exactly your server works - make sure are using prepared statements, or otherwise sanitising the data that comes from the client. We don't want to run into a Bobby Tables situation.

    Well, I hope you found some of this useful, or at least interesting. I don't think you have to implement any of these changes - it's your project after all - but if you don't want everyone to be able to delete all records, I definitely recommend implementing some.


    PS. In case you're wondering how tempted was I to insert a user with 15001900 boss kills - quite a lot. I managed to resist it though :p
  3. finally some one here with good knowledge and understanding about code here,

    thanks check this
    Mac thanks for responding and also sharing your thoughts, i really read all lines, and its really worth my time,

    some thing i want to say, it was just simple game made for game jam - currently going on, and used my plugin to connect with database and do the queries to show data, all data is mean to public so nothing is problematic,

    unless and until some is coder like you - https://www.trimitysolutions.com/da...ct_descending&table=ranking&column=boss_count
    know about this things wont able to change things

    i can understand since you found it, and if this was real game not the demo, then your hands might have itching to put user with 99999999 boss kills :p same for me

    ---------------------------------------------------------------------------------------
    this is just to show how capable plugin is, but if coder got this plugin they can do so many good stuff with rpg maker mv and mz to make online game, and as you said they can make long string, secret ids, and many more stuff, but ppl who are buying this plugin mostly not much knowledgeable to do this much stuff, so i decided to kept the plugin simple and let them allow to use mysql queries to do stuff in that way they can google query and put in there game while developing it

    ------------------------------------------------------------------------------------------
    just i am working on demo online project to give it with plugin while selling it, and this demo project got full online multiplayer database where it have id, user, pass (also custom hash codes),ip, last login, ip ban, userid ban and many more functions and any online multiplayer database need, also many way to encrypted things in final client copy of game, 3 layers of encryption, which will stop the thigs, but still problem is many game developer don't understand it and just want some plug play kind of thing to make mmorpg , i have no words

    -------------------------------------------------------------------------------------------
    this plugin was designed to be used with rpg maker mv mz - pc client copy or android apk not for web version, but since it can be used with all of them so nothing can be done about it
    ---------------------------------------------------------------------------------------------
    this Boss Arena is just simple demo test game, which i can use in participating in the boss jam, but in future i am gonna develop it fully online game with story line, and online things with pc version game, not web one since ------- U can come and change any thing with :p code :) :)
    --------------------------------------------------------------------------------------------------

    really like your msg and your effort you took to mention all things, thanks lot again, if i make the game i am aware of all of this things you mention, and even more security thing i keep in mind while working on real game, Just for you i will give you my other demo version spoiler of database

    1.png

    this is just demo version - real game tables and stuff is total with different and names also
    ------------------------------------------------------------------------------------------

    if your are interested in working on online game , i would really love to work with you, its always feel so good to talk with person , who have same interest and knowledge on what we are doing
    ----------------------------------------------------------------------------------------------
    thanks again:p