Git Product home page Git Product logo

backyard-monsters-refitted's Introduction



Koa.JS NodeJS TypeScript MariaDB ActionScript Flash

Repo Information

We are running a lightweight Koa server written in TypeScript, with a MariaDB database leveraging MikroORM, as our ORM of choice. The client is written in ActionScript 3 and uses Adobe FlashPlayer to display its content.

This repository contains the entire modified SWF (Shockwave Flash) client files, along with the corresponding server component rebuilt from the ground up for Kixeye's 2010 Flash client, Backyard Monsters. The client is running on version 128.5690.


๐Ÿš€ How to Play

We recommend to run the game in the native Flash Player projector, which is included in the root of this repository here. Once you have downloaded and opened the Flash Player, click on File > Open and select the game file. You can find the game file under our latest releases.


Server setup

  1. Clone this repository and checkout the develop branch:
git clone https://github.com/bym-refitted/backyard-monsters-refitted

  1. Follow the instructions carefully on our server setup & configuration Wiki page.

Client Setup

  1. Follow the instructions carefully on our client setup & configuration Wiki page.

  2. To contribute you will need to copy your changes to the src directory. If you are wondering why we are using this horrible workflow please see CONTRIBUTING.md for more information. If you are able to figure out how to compile directly to swf without unlinking all assets, please let us know.


Preservation of digital heritage


License GPL v3

Backyard Monsters preservation project.
Copyright (C) 2024 | The Backyard Monsters Refitted team
See the GNU General Public License <https://www.gnu.org/licenses/>.

backyard-monsters-refitted's People

Contributors

react-1 avatar react1-x avatar jordanplayz158 avatar doniebolgerburneraccount avatar bigmanghark avatar sush1lemon avatar santoryo avatar theclassic0437 avatar

Stargazers

Alvin Zhao avatar Datre avatar Koh Jia Xian avatar Renmar F. Balana avatar Humphrey Appleby avatar  avatar SatisfactoryPlayer avatar  avatar  avatar Alston Chan avatar AHMED ZUHAIR AL ARADI avatar YeoLHP avatar Thiago Solfo avatar  avatar Alejandro Bertinelli avatar Yip Jung Hon avatar  avatar DedProtectr avatar Tร–Rร–K Attila avatar Leon avatar Jorge Armando avatar  avatar Paulo Henrique Rohling avatar drifty avatar BenHeroPH avatar Jannick Oursin avatar Imesha Maldeniya avatar Ayush Mainali avatar  avatar Jan Karuc avatar Levi Leal avatar  avatar

Watchers

DedProtectr avatar  avatar SatisfactoryPlayer avatar  avatar  avatar

backyard-monsters-refitted's Issues

๐Ÿš€ Alpha Release: Comprehensive list of ToDos for production.

This is a generalized list of tasks which need to be followed and/or considered for deployment & production.

  • Code audit before deployment
  • Create donations system โœ…
  • Make SWF patch tool publicly available โœ…
  • Migrations should run automatically
  • Configure package.json scripts for prod
  • Review crossdomain.xml & SessionConig.ts for security diagnostics.
  • Consider a logging writer
  • Review .env generation in prod
  • Consider a scheduler for providing users with a set amount of resources daily / weekly, currently there is no way to loot in game.
  • Consider a fair system for collecting shiny, possibly increase shiny collected from mushrooms. โœ…
  • Consider static analysis tools such as sonarlint, or general build practices for prod
  • Create a solid bug report system.
  • Open source codebase, move everything to GitHub?

Shiny doesn't decrease when you buy from the Monster Bunker store

Describe the bug
You can buy monsters for your bunkers without spending any of your shiny.

To Reproduce
Steps to reproduce the behavior:
Open up monster bunker, click store, pick a monster you would like to have in your bunker and just buy it.

Expected behavior
deduction of shiny of the amount it costs

Screenshots
Before buying:
monsterbunkerstore
Successfully buying:
monsterbunkerstore2
After closing the popup:
monsterbunkerstore3

Desktop (please complete the following information):

  • OS: Winows
  • Using Flash Player 32.0

Additional context

Missing text

Some text still missing #letter_word#

here few examples:
image
image
image

Version: 0.2.3 Alpha

Shiny doesn't decrease when no Internet connection is available.

Describe the bug
If you have enough shiny to do any activity that requires shiny, you can prevent it from using shiny by disconnecting from the server.
Anything bought from the shiny store works as intended even without connection.

To Reproduce
Steps to reproduce the behavior:

  1. Load up your base
  2. Pick anything that requires shiny to unlock/upgrade/speed up (where you have enough shiny)
  3. Disconnect your connection (ie. wifi, unplug cable)
  4. Do the upgrade

Expected behavior
Shiny to decrease or game to kick me out for losing connection.

Screenshots
none

Desktop (please complete the following information):

  • OS: Windows
  • Browser: Not in use
  • Using Flash Player: Yes. latest .swf file 0.2.3 Alpha

Additional context

Sound button not working when left ON

Describe the bug
The sound button (Not to be mixed with music button) is not working as it is supposed to.
Everything is OK when it is muted and the game is closed. The game will remember it is state (gray) and not play any sounds when the game is opened.
If the game is closed WHILE the sound button is ON (yellow), the game will remember it is state (yellow) and still not play any sounds when the game is opened.
Clicking it once while it is yellow will toggle the sounds ON, and still remain yellow and it will play sounds.

To Reproduce
Steps to reproduce the behavior:
Unmute sounds, close game.
Open game, the sounds button should be yellow but no sound should be heard.
Clicking it once will still let it remain yellow but play sounds.

Expected behavior
Play sounds when the toggle is left yellow and the game is re-opened.
Another option would be to revert to gray instead because sounds get muted after re-opening.

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows
  • Using Flash Player yes

Additional context

Map Header URL

The client currently makes a GET request to /api/bm/getnewmap
GET /api/bm/getnewmap 405

It is important to note there is no Authorization header sent in this request, this is an unauthenticated route.

The server controls the route the client sends a GET request to via the mapheaderurl variable in the /api/bm/getnewmap POST response (server/src/controllers/maproom/getNewMap.ts:19). While the variable name is mapheaderurl, the game names the function handling the loading of it onHeightMapLoaded. So the game identifies this as a Height Map, while I am not sure what a height map is, it seems to be in a similar format to the getNewMap response:

{
  width: int = 500
  height: int = 500
  data: Array<Object>[500] = [
    {
      h: int = 0
      t: EnumYardType = EnumYardType.EMPTY
    }
  ]
}

(variableName: type = defaultValue)

This warrants further investigation to know what height map controls and why it is important (it is used specifically when MapRoom3/Map Room Version 3 is used) or.... If we do not send the mapheaderurl in the response, the client has code to generate a default height map that is used instead (But without knowing what it controls, not sending it may not be ideal in the end).

Level progression is not the same for server & client

Describe the bug
You are leveling up visually faster in the client compared to what server registers. After re-opening the client you are reverted back to what I assume is progression the server has saved.

To Reproduce
Do anything that can give you XP. Easiest would be to have a fresh account and just store all resources. You will be level 2 instantly while if you re open the game you will go back to level 1

Expected behavior
The visuals of the XP progression should not require a restart. It should show correct XP gains.

Screenshots
How the progress bar is before doing any activity

github1

How the progress bar looks after collecting resources
github2

How it looks after a restart of client
github3

Desktop (please complete the following information):
Windows
Using Flash Player 32.0

Additional context
You gain different XP compared to what ingame activity you do:
Collecting resources gives too much visual XP while restarting barely moves it.
You gain more XP visually and after restart if you i.e upgrade your walls, but they don't match each other (Restarting still gives less)
Same with Town Hall, you can progress from Middle XP bar of level 23 to straight to 26 1/4 while after restart you actually are just level 24.

Wormzer's Splash Damage Affects Your Own Buildings

Describe the bug

Screenshot_3

To Reproduce
Steps to reproduce the behavior:
Put Wormzer in monster bunkers with the splash damage ability
When they pop up from ground they will do splash damage to your walls and close buildings

Expected behavior
Expected to only do this behavior when attacking and not on defense

Screenshots
Screenshot_4

Also includes a video of it in discord link
https://discord.com/channels/1126689848426774572/1229718837138821160/1229718837138821160

Desktop (please complete the following information):

  • OS: windows

  • Using Flash Player Yes

Additional context
Add any other context about the problem here.

Skipping Inferno attacks by closing the game

Describe the bug
You are able to skip Inferno attacks by closing out the game. You will not take any damage and you can continue to upgrade and do whatever you want afterwards. You are skipping the Inferno cave stages with this too.

Does not apply to wild monster tribe attacks.
To Reproduce
Steps to reproduce the behavior:
Start the game, if you are getting Inferno attack, close the game and reopen. Everything should be normal and no attack is happening. Inferno cavern gets bigger.

Expected behavior
if you close the game, the game should continue with the attack after reopening the game.

Screenshots
Opening the game first time
infernoalert

Closing and opening the game second time
infernoalert2

Inferno cavern expanding
infernoalert3

Desktop (please complete the following information):

  • OS: Windows

  • Using Flash Player yes

MR2: Clicking Popup 'Brave New World' sets Map Room version to 1

How to reproduce:

  • When first starting the game,. you will be prompted to join the New World Map.
  • Click on this, this will cause the World Map version to be set to 1.
  • You will get infinitely stuck on "Please Wait..."
  • If you exit the game and return, the Map Room is now broken / set to v1.

Temp solution: Recycle the MapRoom and don't click the popup

image

Purchase remaining resources with shiny does not reduce Shiny.

How to reproduce:

  1. Click on 'Use Resources' when building or upgrading a building you don't have enough for.
  2. A popup will appear asking if you want to purchase the needed resources with shiny to upgrade.
  3. Shiny will not go down, and logs the following error:

Cannot read properties of undefined (reading 'c')\n at updateCredits

Clicking locked extra slots in Yard Planner soft locks the game

Describe the bug
The extra slots soft locks the game when clicked on

To Reproduce
Steps to reproduce the behavior:
Open up Yard Planner
Click on Save Yard
Click on any of the locked saves

Expected behavior
Either show a pop up that is close able
OR
do nothing

Screenshots
Game being soft locked after clicking
Screenshot_2

Desktop (please complete the following information):

  • OS: Windows
  • Using Flash Player Yes

Additional context
Screenshot_1

Fails to load user base after first user registers

How to reproduce:

  • Clear your db, and register a new user, login & load their base. (Do not check the remember me checkbox)
  • Exit the game, register a 2nd user, login & load their base.

This is something that was working before, but after testing, creating a 2nd user in the database and attempting to load their yard results in this:

img1

Buildings stacking on top of each other

Describe the bug
bluetenit

To Reproduce
Steps to reproduce the behavior:
Havent been able to reproduce yet. Possible Darlax97 from discord could help as he has some experience with this bug.

Expected behavior
Buildings shouldn't be able to stack or merge with each other in any way.

Screenshots
Screenshot_3
Screenshot_4

Desktop (please complete the following information):
Not quite sure about OS and flash player. Contact Darlax97

Missing Assets

This issue involves assets that are required by the client but currently are missing from the server assets directory. These images will need to be found so that the client can use them correctly. These assets once lived on original servers, and can only be recovered through searching the cache of user's hardrives (HDD).

img2

Compound expansion from store doesn't actually increase space

Describe the bug
Compound expansion in store doesn't actually increase space as the text implies.

To Reproduce
Steps to reproduce the behavior:
Go to store,
Buy compound expansion.

Expected behavior
Do whatever the text describes, increase housing capacity by 25% for 24 hours.

Screenshots
screenshot after buying:
Screenshot_2
Screenshot of monster housing with buff active
Screenshot_3

Desktop (please complete the following information):

  • OS: Windows
  • Using Flash Player

Additional context

Champion feed time resets after freezing and thawing out

Describe the bug
Champion feed time resets back to 23 hours every time you unfreeze a champion.
This could lead to having a champion that never needs to be fed as long as you freeze it once every day.

To Reproduce
Steps to reproduce the behavior:
You need to have a champion cage and a champion chamber.
Thawing out any champion from the champion chamber will always come well fed and 23 hours countdown.
You can freeze it to bring back any champion with reset 23 hours countdown

Expected behavior
When frozen, the champion should also save their current cooldown. Each champion is supposed to have their own cooldown after being thawed out that continues their last cooldown before being frozen.

Correct behavior can also be seen here

Screenshots
Screenshot_1

Desktop (please complete the following information):

  • OS: Windows
  • Using Flash Player 32.0

All displayed text in game are placeholder values.

All texts that are displayed in game where fetched from a languages file located on original servers. Since we do not have access to that file anymore, we must manually create all texts from scratch. The languages directory is located at: server/public/gamestage/assets

img3

Upgrading Inferno buildings on main yard, return to base failing to load.

How to reproduce:

  • Have enough resources to start a normal upgrade on an Inferno building on your main yard. (load endGameBase.ts)
  • Start upgrading e.g. Spurtz Cannon
  • Exit the game and return

This should activate the following error message:

img4

Additional information: This error gets caught from our try/catch block for handleBaseLoadSuccessful from within BASE.as. So the root of the error is within this code block.

Collecting Mushrooms Doesn't Increase Shiny Count

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:
The steps or flow that you took to reach this problem

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. Linux]
  • Browser [e.g. chrome, safari]
  • Using Flash Player [e.g. Yes/No]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

I will fill this in later

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.