Giter Site home page Giter Site logo

community-rpg's People

Contributors

benjamin-kirkbride avatar bkiu avatar chgerald avatar cleptomania avatar damianwilder avatar iansedano avatar jmarokhovsky1 avatar martin-martin avatar micgreene avatar narongsaron avatar pushfoo avatar pvcraven avatar royce79-creator avatar tooblue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

community-rpg's Issues

Bug: Cats do not use vertical movement texture data

Describe the bug
Cats do not use the texture data for vertical movement. This data is included in their sprite sheets, but never used in-game:
image

To Reproduce
Steps to reproduce the behavior:

  1. Launch game
  2. Watch until a cat decides to move up or down

Expected behavior
Texture data for vertical movement is used when moving up or down

Enhancement: Entity Component System

Currently there isn't much of a system to handle entities and especially different types of them. As the game's complexity and feature set grows we will need at least some minimal system for this.

My suggestion would be a simple class based approach, while maybe not truly an entity component system, it will probably handle most of what we care about for the foreseeable and be easy enough for people to understand.

There is a very basic system in Arcade's platformer tutorial here: https://api.arcade.academy/en/latest/examples/platform_tutorial/step_17.html

This is a simple and straight forward system, however maybe not the most flexible. Definitely this is open for discussion/suggestions on what might be the best approach.

Feature: Give characters foot step sounds

Many games play different foot step sounds depending on which surface a character is walking on.

For example, if the player was walking on grass, each foot step event would play a random sound from a pool of grass walking sounds. If the player moved to a stone surface, the game would play the sound of boots stepping on stone instead.

To get started on this, we could simplify the tile types into the following categories:

Sound set Example tiles in map
Grass Light grass, Dark grass
Stone Cobblestone path, Dungeon floor
Dirt Dirt path, Garden, Graveyard
Wood House interior, Bridges
Sand Beaches

We can pull sounds from Kenney's impact sounds set. It is licensed under a CC0 1.0 Universal Public Domain Dedication, which means there are no licensing restrictions at all. However, It would still be polite to cite the source.

This ticket should synchronize with the same animation speed used to fix #5. The sound files should be placed in a directory under resources.

Bug: Foot step sounds get stuck re-playing rapidly

Description

The foot step sound gets stuck playing. Sometimes this keeps playing after movement keys are released, but it may also stop when the movement controls are released.

How to replicate

  1. Install and run the game per REAMDE.md
  2. Mix brief taps of the direction arrow keys until repeats of the foot step sound begin to play rapidly one after another

Feature: Inventory Improvements

Currently there is an inventory system that works by having 10 slots, which are displayed on the bottom of the screen and an active slot can be selected by pressing the number keys.

We want to expand this into a bigger inventory system, and turn the 10 slots at the bottom into a hotbar style system. This means you could take any item from your inventory, and assign it to whatever space in the hotbar you want to, but it isn't actually the "container" for the item.

Ideally this should also combine with some kind of equipment system, such that you could equip weapons/armor to your character.

Some rough idea for getting this started:

  • Container object which can hold some defined number of items
  • This container object can then be used by the Inventory to give it an item container, but likely the player inventory has extra functionality ontop of the container.
  • The container object can then be re-used to give things like chests or NPCs an inventory as well, but have it function differently than the player's inventory.
  • An inventory view which shows the items you have, allows assigning to hotbar positions, and equipping items that are equippable(armor for example).

There is already an Inventory view in existence, it can be accessed by pressing I, however it is just an empty view, and doesn't currently do anything.

Definitely open to ideas on this, maybe something like a space based inventory where you arrange items in a grid like this below example from Diablo:

image

This would be a great addition to the game, however does add a lot more complexity to the inventory system, so probably fits better as a future improvement once the base system is implemented.

Bug: Sprite movement animation speeds are too high

Describe the bug
Animations for moving character sprites are too fast, resulting in jitter or flicker instead of a convincing walking movement.

To Reproduce
Steps to reproduce the behavior:

  1. Launch game
  2. Observe the cat moving, or move the player character with WASD/arrows

Expected behavior
A reasonable pace for animations that looks like walking

Screenshots
Wayland is making it hard to capture video, so I apologize for not including a webm of the problem.

Desktop (please complete the following information):

  • OS: Linux, Debian 11
  • GPU: UHD Graphics 620
  • DE: Gnome 3.38.5 on Wayland

Bug: Game crashes with exception when launching

Describe the bug
Game does not launch, instead dumping exception traceback

To Reproduce

  1. Install project with pip install -e ".[dev]" per README instructions
  2. Launch project with python -m rpg per README instructions
  3. Observe that no game window is created
  4. Observe error in console:
$ python -m rpg
Traceback (most recent call last):
  File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/user/src/community-rpg/rpg/__main__.py", line 10, in <module>
    from rpg.views import LoadingView
  File "/home/user/src/community-rpg/rpg/views/__init__.py", line 1, in <module>
    from .loading_view import LoadingView
  File "/home/user/src/community-rpg/rpg/views/loading_view.py", line 8, in <module>
    from rpg.views.game_view import GameView
  File "/home/user/src/community-rpg/rpg/views/game_view.py", line 7, in <module>
    from turtle import bgcolor, color
  File "/usr/lib/python3.9/turtle.py", line 107, in <module>
    import tkinter as TK
ModuleNotFoundError: No module named 'tkinter'

Expected behavior
Game launches with a window visible.

System Info:
Provided with python -m arcade:

Arcade 2.6.14
-------------
vendor: Intel
renderer: Mesa Intel(R) UHD Graphics 620 (KBL GT2)
version: (4, 6)
python: 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110]
platform: linux

Additional context

  • The turtle import appears to have been added recently
  • It does not appear to actually be used anywhere
  • It is likely an accidental inclusion in a beginner's PR during the PyCon sprint

GUI System

We need a unified system for the GUI.

I was going to create an issue for enabling use of the mouse for the ESC menu, but realized that that opens a big can of worms.

This is a pretty foundational thing, so I don't think we want to leave this as an open to first timer's thing.

Documentation: Map Creation/Editing guidelines

The game uses a number of more advanced Tiled map editor features to enable some dynamic functionality in the levels. For example, there are special properties which can be used to set things about an object, or for an entire map. These things need to be documented in a way that non-programmers can read and understand how to use them in the map editor.

As an example:

An object layer named searchable in the map is special, objects within this layer will be looked at for collisions for item pickups. Objects on this layer are then expected to have an item property which corresponds to an item that is in the item-dictionary.json data file. This data on the map lets the game know what item should be picked up when that object is interacted with.

There are many more examples of the maps enabling functionality like this, so we need to go through and document everything for in maybe a markdown file or perhaps on the Github Wiki section of the project? It should be a living document that can be updated as we enable for features like this though.

Feature: Configurable keybinds

Players should be able to configure the keys they want to use for actions within the game. A good first step towards this would be to ensure all inputs are driven via some global system where the configuration can be applied to. Then hooking in a settings menu would just need to modify this configuration.

Perhaps as an added bonus we should have a way to save this, perhaps in a settings.json file so that it persists when the game is closed and re-opened. This system would also open the door to more configuration down the road being stored with this.

General: Map Creation

Currently the map in the game is pretty small, doesn't have much content on it. We'd like to both make a large map, and more maps. More buildings that you can enter, dungeons, etc.

There isn't a big clear direction for this, so if anyone has ideas for maps to create, feel free to build something out and we can then figure out how to get it implemented into the rest the of the game.

README.md needs to be updated with a link to the discussion board

Describe the bug
README.md refers to issue #31, but it does not properly get rendered as a link on the repo homepage. #31 only shows up correctly in the following cases:

  1. Issue selector dropdowns when writing in the GitHub interface
  2. GitHub issues or comments, such as this one

This appears to be a problem with GitHub. To encourage contributions, we should still provide a fix for it on our side.

To Reproduce

  1. Go to the repository github page
  2. Scroll down to the Gameplay section
  3. Mouse over the link that should point to #31
  4. It is neither a link nor a JS-enabled interactive element

Screenshot example:
image

Expected behavior
A clickable link directs users to project discussion.

Proposed solution
Add links pointing to these locations:

  1. The github discussion boards for the project
  2. (Optional) The arcade discord server

Update screenshot in README.md

This could be done immediately to incorporate the changes made during the PyCon sprint, or it could wait until further changes are made.

It might be nice to get a few more NPCs on screen, however.

Bug: Player sprite draws on top of NPCs

Describe the bug
The player sprite is rendered above mobile NPCs which are located lower down on the screen and should be drawn later.

To Reproduce
Steps to reproduce the behavior:

  1. Start the game with python -m rpg after install
  2. Use WASD/arrows to move the Player Character so its center XY position is above a cat's center XY, but is close enough for the outlines of the two sprites to intersect

Expected behavior
If the player's XY is placed higher on the screen than the cat's, the player should be drawn under the cat to preserve classic top-down RPG aesethetics.

Actual behavior
The player sprite is drawn over the cat sprite
image

Controls listing in README is hard to read on one line

Describe the bug
The controls listing in README.md is hard to read because it is all on one line

To Reproduce

  1. Open the repo's home page in web view
  2. Scroll down to Gameplay > Controls
  3. Observe controls crowded onto one line

Expected behavior
The controls are organized in a legible manner, either as a table or a list.

Screenshots
image
image

Bug: Camera moves oddly when entering/exiting interiors

Describe the bug
Entering or exiting an interior area creates an unexpected 1 second period of camera movement instead of instantly viewing the intended position

To Reproduce
Steps to reproduce the behavior:

  1. Launch game with python -m rpg
  2. Immediately walk up into the first door above the player using W or the up arrow key
  3. Watch the camera move for roughly 1 second before settling on a reasonable view
  4. Walk down to exit the building using S or the down arrow key
  5. Watch the camera move for roughly 1 second before settling on a reasonable view

This also applies to:

  • the door to the west of the first door from spawn, on the same building
  • the hole in the graveyard at the west side of the map

Expected behavior
The camera instantly jumps to an appropriate position

Feature: Main Menu with UI

The game should have a main menu with a UI that allows you to start a new game, open settings, quit, etc.

There is already a main menu view within the game, however it is not actually used by the game, and it does not make use of Arcade's UI features, it just simply draws text and catches a key press to switch to the game view.

Feature: Add sounds for doors & item pickups

Interacting with objects like doors, ladders, and item pickups is more satisfying for players if the action plays a corresponding sound.

The following actions in this RPG could be improved by adding corresponding audio:

  • Picking up apples from the basket in the house
  • Picking up the dagger from the cloth-covered pot in the dungeon
  • Using the doors to enter and exit the house
  • Moving up and down the ladder to the dungeon found in the hole in the graveyard

Most of the actions in this list have reasonable matches in Kenney's RPG Audio pack. For the ladder sounds, a number of clips could be played one after another, or an audio editing program could be used to create a sound.

The sound files should be placed in a directory under resources.

Since the RPG Audio pack is licensed under a CC0 1.0 Universal Public Domain Dedication, there are no licensing restrictions on the sounds at all. However, It would still be polite to cite the source.

Feature: Use graphical key / button representations in the HUD

tl;dr:

The HUD would be easier to understand if we used icons for keys/buttons instead of text.

What we have now

Per discord discussion with @Cleptomania:

  • the current HUD has slots numbered 1 through 10 at the bottom of the screen
  • the slots were originally intended to correspond to the 1 through 0 keys
  • item icons are supposed to go in those slots

image

What would be better

  1. Use graphical assets that look like keys and buttons instead of text labels
  2. Optional: integrate it with #3

Implementation Suggestions

For the icons, Kenney.nl has a nice example we could scale up for use in this project:

image

It's provided under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication, so the license terms are fine. Although we don't have to, we should probably still cite the asset in the README.md or other appropriate location.

Hitbox does not match textures

left wall end

image

vertical wall

image

character's hitbox should just be on feet (head should not collide with wall above)

image

left iron fence end

image

vertical iron fence

image

left wood fence end

image

vertical wood fence

image

Pressing the Main Menu button (Esc) crashes the game

Describe the bug
See title

To Reproduce
Steps to reproduce the behavior:

  1. Start the game (python -m rpg)
  2. Wait for the game to load in
  3. Press Esc
  4. Game screen disappears and a stack trace appears in the terminal the game started from

Expected behavior
Main Menu screen is shown

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

Desktop (please complete the following information):

  • OS: iOS

Additional context
Add any other context about the problem here.

Feature: RPG dialog boxes

Many RPGs use a similar style of dialog box. It generally works as follows:

  1. Clear the box and store the string to display
  2. Wait for a delay period to pass, usually a fraction of a second
  3. Display a new glyph after any previously shown
  4. If there glyphs left to show, go back to step 2
  5. Wait for the player input
  6. If there are further strings to display, select the next one and go to step 1.
  7. Close the dialog box

Examples include:

It could be implemented by doing the following:

  1. Subclass one of the built-in UI widgets , such as arcade.gui.UILabel
  2. Use one of the built-in Kenney pixel fonts as the font
  3. Add an on_update method that takes a float, delta_time. This method will increment tracking for the character display functionality.

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.