pythonarcade / community-rpg Goto Github PK
View Code? Open in Web Editor NEWOpen-Source RPG using the Python computer language and the Arcade graphics library.
License: Other
Open-Source RPG using the Python computer language and the Arcade graphics library.
License: Other
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:
python -m rpg
after installExpected 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
Describe the bug
Game does not launch, instead dumping exception traceback
To Reproduce
pip install -e ".[dev]"
per README instructionspython -m rpg
per README instructions$ 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 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.
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.
Adding some indication on items on the map for items that can be picked up.
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.
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:
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):
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:
python -m rpg
W
or the up arrow keyS
or the down arrow keyThis also applies to:
Expected behavior
The camera instantly jumps to an appropriate position
"it would be an easier way to do it" - @Cleptomania
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:
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.
the cat and dog are broken
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:
This appears to be a problem with GitHub. To encourage contributions, we should still provide a fix for it on our side.
To Reproduce
Expected behavior
A clickable link directs users to project discussion.
Proposed solution
Add links pointing to these locations:
The HUD would be easier to understand if we used icons for keys/buttons instead of text.
Per discord discussion with @Cleptomania:
1
through 0
keysFor the icons, Kenney.nl has a nice example we could scale up for use in this project:
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.
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.
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:
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:
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.
Many RPGs use a similar style of dialog box. It generally works as follows:
Examples include:
It could be implemented by doing the following:
arcade.gui.UILabel
on_update
method that takes a float, delta_time
. This method will increment tracking for the character display functionality.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.
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
.
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.
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:
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Texture data for vertical movement is used when moving up or down
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.
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.
Describe the bug
The controls listing in README.md is hard to read because it is all on one line
To Reproduce
Expected behavior
The controls are organized in a legible manner, either as a table or a list.
Describe the bug
See title
To Reproduce
Steps to reproduce the behavior:
python -m rpg
)Expected behavior
Main Menu screen is shown
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Additional context
Add any other context about the problem here.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.