Git Product home page Git Product logo

ultimateownsz / pyseasgame Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 3.0 654 KB

Welcome to PySeas, an open-source project to create an exciting and engaging board game in Pygame, inspired by the popular game Sea of Thieves! This project is perfect for anyone interested in game development, Python programming, and creative collaboration.

License: GNU Affero General Public License v3.0

Python 100.00%
boardgame pygame pygame-games python

pyseasgame's Introduction

PySeas - Open Source Pirate (Adventure) Board Game

Discord PRs Welcome License

Project Description

Welcome to PySeas, an open-source project to create an exciting and engaging board game in Python, inspired by the popular game Sea of Thieves! This project is perfect for anyone interested in game development, Python programming, and creative collaboration.

About the Project

PySeas {working title} a tiled based adventure game Python/Pygame-CE project. It is based on a former school project, a board game made in Python.

Get notified about project updates

For organising the project we mainly use Codecks. Codecks is a management tool made for indie game developers, it is based on a card game and has a lot of similarities like Trello. The main thing what we liked about this is, we can show you how we make the game via open decks. Decks make it possible to share contens of any projects we are working on publicly on the web. You can create a account to get notified for updates or you can vote on cards.

Discord server

We also made a dedicated Discord server where you can engage in conversations about how to improve, add or give feedback to the developers. It also has the option to construct a message to send to Codecks to directly see it on the deck what is being worked on or being fixed.

Project Goals

  • Pygame version: We aim to create a pygame version, everything we wanted to do in Python wasn't possible so we decided to remake the game in Pygame: bringing enhanced graphics and more dynamic interactions.

For all new goals we refer to see Codecks to vote on cards with implementing features/goals. We also made improvements to give feedback within the Discord directly to Codecks..

Goals for later

  • Refactor the Python version: The project started out as an Python boardgame inspired by Sea of Thieves and is now changed to a bigger project and scope. We intend to first remake the game in Pygame first and later on refactor the game to Python's version too but with an ASCII look.
  • Unified Launcher: Our final goal is to provide a Pygame-based launcher that offers players the option to choose between the Python version and the Pygame version of the game, making it easy to play either version from a single interface.

Why Join PySeas?

  • Learn and improve your Python and Pygame skills through practical, hands-on development.
  • Collaborate with a community of like-minded enthusiasts and contribute to a shared goal.
  • Create something fun and engaging that others can enjoy and build upon.
  • Explore the world of game development and design, gaining valuable experience along the way.
  • Contributing to an open-source project can be a great addition to your resume or portfolio, showcasing your skills to potential employers or collaborators.
  • As an open-source contributor, you have the opportunity to influence the development and future features of the game. Your ideas and feedback are valued and can directly impact the project.

Whether you're a seasoned developer or just starting, your contributions are valuable. Let's create an amazing board game together!

How to Get Involved

This project requires Python 3.12 or above. Luckily you can set up a virtual machine to run the project with.

  1. Clone the Repository: Start by cloning the PySeas repository from GitHub.
  git clone https://github.com/ultimateownsz/pyseas.git
  1. Set up a virtual machine:

    Linux/MacOS

    python3 -m venv venv
    source venv/bin/activate
    

    Windows

    python -m venv venv
    venv\Scripts\activate
    
  2. Install dependencies:

pip install -r requirements.txt # For running the game (runtime dependencies)
pip install -r requirements_dev.txt # For local development
  1. Run this project:
python main.py

Local Development

See how to contribute: contribute

Linting and Formatting

We chose to use Ruff to automatically lint and format the code. Run pip install -r requirements_dev.txt to install Ruff and other relevant dependencies.

Important

Before you open a Pull Request, please run this bash commands to format your code properly and doesn't upset our linter:

ruff format . && ruff check --include I --fix . # this formats code and sort imports
ruff check . # run linting and perform fixes
mypy main.py

If you use powershell, run these commands:

ruff format .;
ruff check --include I --fix .;
ruff check .;
mypy main.py

pyseasgame's People

Contributors

ultimateownsz avatar purpleprog avatar

Stargazers

Dave Vermeire avatar  avatar Arai Jenn avatar

Watchers

 avatar  avatar  avatar

pyseasgame's Issues

Create camera system

Basic camera system

  • We need to have a camera system where it can focus on the player or have a zoomed out version of the map that it can be seen from a 1280x720 screen.

An issue with how the shop behaves

With how we made the game for a school assignment, we did not figure to add some logic to how the game behaves.

What we wanted was a set of items you receive in the beginning of the game that if you encountered the shop, you could buy quests to help you get more loot. Because of the timeframe of a week and the scope of the project, we had to cut these features and make it simpler.

The code might need some refactoring to add the logic of having items at the start, like how a board game as Monopoly or Catan is set up. We had no prior experience with classes, so we tried what we thought would work best.

Basic User Interface

Our main focus is now on the basic implementation and coding of all the systems that work together in order to make a basic game loop for the boardgame. We haven't decided on how the UI would look like and have to make this decision on the Discord server. If you are not part of our Discord yet, you can join it here

We will update this later on:

  • task
  • task

Inventory system update

Add upon the basic inventory system

  • see how much "money" you have
  • see what items you have in your inventory
  • create a basic shop interaction (first create a basic shop system)

Extra

  • able to sell items from your inventory to the shop
  • able to trade with npc's you encounter (first create a basic npc system)

Basic economy

Basic economy

We need a basic economy:

  • what are items worth
  • how do we get money to add to our inventory โ†’ quests, treasure hunts etc.
  • how do we sell items โ†’ shop

Basic turn system

Basic turn system

In order to have the player switch their turn, we have to make a turn system.

It needs to have:

  • dice system that moves the amount of eyes to a tile.
  • end turn and switch to player 2

Extra

  • outcome of throw: what can you do?
  • UI: how to integrate this into the UI that the player knows they can throw the dice and move their ship

Win condition is not yet implemented

I tried to fix the code multiple times, but in the main the win condition is not there, or I forgot to implement the win condition. By watching the code thoroughly,

I saw that I completely forgot to add the win condition. This is because this project was used prior to my GitHub repo experience, no version control and I did everything by naming different versions of the code. Quite annoying if you compare it now to GitHub haha.

I will add a fix hopefully in the next coming days!

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.