Share your repls and programming experiences

← Back to all posts
21
⛵The Journey of Bella Shores: Open-World, Story Driven, Trade and Combat Game

Play as Bella Shores in an adventure to find her father. Fight pirates and trade among islands in this open world, story-driven game.

Download an executable here to play through the same great story, but without latency or frame skipping.

Features

  • An open, randomly generated world
  • Harbors that enable trade between islands
  • A full story, complete with dialogue and a journal that Bella uses to record her journey
  • 5 different types of boats you can buy
  • 4 different types of enemy boats
  • A map that shows your location in relation to all the other islands

How to Play

  • Move using WASD.
  • Shoot using the ARROW KEYS.
  • Press E to open the shop when you are near a harbor.
  • Press R to open the journal. Use the ARROW KEYS to scroll through entries. Journal entries will be added as the story progresses. If you have a journal entries to read, a red indicator will appear on the top left.
  • Press F to open the map. Your location is displayed as a boat, your target destination is circled in black.
  • Press SPACE to progress through dialogue.
  • Press ESC to exit all menus
  • As you move farther from the center, shops will sell more valuable items and more difficult enemies will spawn.
  • Follow the story only if you want to. You can always just go out and get rich trading/fighting pirates if you want to. Bring your calculator if you want to make a profit trading, though. ;)

Background

  • The idea for the game is actually based off of TI-84+ graphing calculator project I worked when I was first learning how to program. This game is obviously quite a bit different than the graphing calculator version I made, it still is inspired by that original idea.
  • While this game doesn't directly relate to the theme of cash, one of the main premises of the game involves the trading of commodities to make a profit. Commodities were actually used as a medium of exchange in ancient civilizations before currencies were created. Also, many currencies up until the mid 20th century were backed by gold (or other commodities). This meant that each bill had a set worth in gold. Now, most currencies are fiat currencies. This means that the value is defined by the government or a central bank, even if it lacks intrinsic value. Anyways, while a commodity is no longer cash, it used to be pretty darn close to it.

The Future

  • Allow the user to save the game and start where they left off later
  • Improve the story so the player learns more about Bella and her Father before the game ends
  • Improve graphics, mainly by adding more to the islands so they are more pleasing to look at and by improving how harbors look
  • Work on balancing so the enemies are the right level of difficulty

Notes to Judges

  • I realize that you have a lot of submissions to grade, but it would mean a lot to me if you would play through the entirety of the campaign. It does take about 20-30 minutes, but it's not repetitious and there is story.
  • Pay attention to the text boxes so that you know what to do next. I didn't have enough time to add in a feature that reminds what you need to do next (excluding the destination feature on the map)
  • Read the journal entries! They add a lot to the story. Use the arrow keys to page through them.
  • Run the game locally if you can. It'll make the combat a lot more fun. The latency/frame skipping on Repl makes it difficult to dodge bullets. I've provided an executable that runs the game really nicely.
  • If you're on a Mac and can't run executables:
    1. Fork the Repl and download the game as a zip.
    2. Change the file paths for the fonts in the map_manager and ui_manager classes. Search for "/home/runner" and replace it with directory you have the game stored in.
    3. Delete import replit and replit.clear() in the main class.
    4. You probably will want to delete the pygame.FULLSCREEN flag in the main class so your screen resolution doesn't get set to 800x600.
    5. Make sure you have the Pygame module installed.

Credits

  • This game's programming, art, and writing is by Josh Wood.
  • The explosion animation was made by KnoblePersona.
  • The Luna (handwriting) font was made by Amanda Leeson
  • The 6809 Chargen (pixelated) font made by Raymond Larabie
  • Special thanks to Scoder12 for helping the project get started and providing valuable feedback along the way.

License

Creative Commons Attribution NonCommercial

Commentshotnewtop
2

This is a really cool game!

2

Love everything about this :)

1

@timmy_i_chen Thanks! Check it out shortly before the game jam ends. The story mode should be complete then.

2

Wow, this is amazing! Huge props for making this amazing game!

2

It's a well polished game, but the optimization is a huge issue. I get around 5 frames while playing this.... maybe try down scaling the graphics? Otherwise a good game.

2

@jarules214 Unfortunately the FPS isn't stable. I usually get ~40 FPS when signed in to hacker and ~20 FPS when not logged in. However, sometimes Repl will get really slow and I get <10 FPS whether I'm signed into hacker or not. Furthermore, Pygame Repls won't necessary stream all the frames to your computer. So even if you are running a high FPS, it may feel much slower due to frame skipping and latency.

I've profiled my code to try to figure out what is causing the FPS. The main problem is the tilemap of 16x16 images. Blitting all the images takes the vast majority of the processing time. To increase my FPS I think I would make the game not scroll so that I wouldn't have to redraw the entire screen each frame. However, I think doing that would make the game a lot less fun. I guess I just hope that the judges have hacker or try running the game locally. It really isn't that graphically intensive of a game, I think it should be able to run smoothly.

1

@joshwood I think I've fixed the frame rate issue

1

@joshwood runs much better, thanks!