Custom game engine built upon python/pygame
Reason this release was yanked:
minor upgrade
Project description
What is pyved-engine
?
- a game engine (=a set of tools whose purpose is the rapid prototyping of video games)
- a wrapper around the popular pygame lib
- the abbreviation for [k]ata [engi]ne
Why "kata"?
Kata.Games denotes a new gaming platform that helps indie game developers to create and share
digital experiences easily, all around the globe!
Via this innovative platform, we're proud to publish all kinds of games powered by pyved-engine
.
Design principles
-
Code readability matters. Clean, expressive code is not a luxury!
-
pyved-engine
encourages the use of patterns such as the Mediator or MVC, but people should remain free to use their favorite coding style. -
pyved-engine
will be embedded in a versatile toolbox simply namedpyved
Feature Overview
The game engine comes packed with useful features:
- global event queue (simplifies the use of both the Mediator and the MVC design patterns)
- gamestate stack, state management via events
- simple GUI creation: buttons, checkboxes, etc.
- tileset loading, sprite animation
- tilemap parser (based on
.tmx
or.tsj
file formats) - mathematical tools: matrices ; vectors ; gradient noise functions (->procedural generation)
- helper classes for coding roguelike or RPG games
- helper classes for coding card games (Poker, Blackjack, etc.)
- helper classes for adding artificial opponents/intelligent entities (NPCs) to your game
- ...
Installation
To get started, first, copy the source-code (as a .zip file) from Github. It is recommended to download the last tagged version, (not the most recent commit) because most recent dev versions might be unstable.
Once you have the files on your computer, use the command line to navigate to the root folder of the project (one level below src\
).
Because pyved-engine
is still in an alpha phase,
it is recommended to clone the repository by yourself and
then use the command line to install pyved-engine
in an editable
mode.
> git clone https://github.com/gaudiatech/pyved-engine.git .
> cd pyved-engine
> pip install -e .
These 3 lines install pyved-engine
on your system, but also
allow you to modify the source-code of the engine.
Getting started
To test pyved-engine
right away, you could
create an empty file named test_engine.py
.
Then copy-paste the basic code snippet below, it shows you how
a game can be built.
import pyved_engine as pve
HELP_MSG = 'press ESC to exit, any key to change bg_color...'
CAPTION = 'my first video game, hi mom!'
pve.init(1, caption=CAPTION)
pygame = pve.pygame
screen = pve.get_surface()
color_idx = 0
allcolors = ('pink', 'yellow', 'purple')
bg_color = allcolors[0]
print(HELP_MSG)
gameover = False
while not gameover: # game loop
for ev in pygame.event.get():
if ev.type == pygame.KEYDOWN:
if ev.key == pygame.K_ESCAPE:
gameover = True
else:
color_idx = (color_idx + 1) % len(allcolors)
# update "game logic"
bg_color = allcolors[color_idx]
# update the display
screen.fill(bg_color)
pve.flip()
print('done!')
This is only one possibilty, very similar to how you
define games using pygame-ce
. In the docs you will see better,
more efficient ways to define your games.
Documentation
Its still very rough, some help is needed to improve that part!
All files to build the documentation can be found within the docs\
folder.
To read/preview the current version of docs:
pip install -r requirements.txt
mkdocs build
mkdocs serve
Mini tutorial
If you're familiar with pygame
, getting used to pyved-engine
is really easy.
Navigate to the src/
folder. There, you see a very basic example that uses only pygame:
Now try to notice what is different when one uses pyved-engine
(only minor details change):
This is only one way to use pyved-engine
but it's most likely that you will start with this one,
if you already have some background in creating games using pygame
.
Actually, one can see pyved-engine
as a mere wrapper around pygame. Everything that you can do
with pygame
can be done the same way when using pyved-engine
, but pyved-engine
also unlocks
many new features that are very worthy of interest!
To explore more possibilities you can take a glimpse of the next demo that implements the same thing but using the M-V-C pattern:
Note that this program starts with the declaration
of a list of user-defined events. User-defined events can have attributes.
These events, just like regular pygame events, are processed via a standard method
proc_event
that you need to re-define when you sub-class
pyved-engine.event.EventReceiver
...
General goal
As a wise man (Joel Spolsky) once said:
"It’s Harder to Read Code than to Write it"
Our general goal is to empower you to:
- write standardized therefore very easy-to-read code
Readability is not to overlook! If you take care of your code readability you'll encounter 30% fewer bugs, you will fix any bug faster, etc. It works like magic!
- write a type of code that can evolve easily
By using our built-in event system along with the M-V-C pattern, you can reach an amazing level of code flexibility.
- be more productive
And, interestingly enough:
- distribute your newly created games via our awesome Kata.Games platform!
In this way, your whole game and the python source-code that it's made of, can be played directly by modern browser (Chrome, Brave, etc.). A world premiere!
License
Currently, materials in this repo are all licensed under the LGPL3 license.
See the LICENSE
file for more info.
Contribute
Feel free to join the developer team. It's a super easy two-step process:
(a) start by forking pyved-engine
,
(b) join our Discord to discuss, or create a Pull Request directly!
If you spot a bug, create an issue and tell us how to reproduce the bug.
The documentation is built via the mkdocs
tool. Feel free to make it more user-friendly! It's as simple as modifying a few text files in the docs/
folder.
Pull Requests are much appreciated!
Newcomers are always welcome, below are listed the 10 first contributors –our Hall of fame– ;-)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyved_engine-23.6a2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c1f098ec427a39010412c2376a72608673bcb3e4bbb344b5e72cd2a8651451b |
|
MD5 | 67746ed96a6716ba0edf796e9be070df |
|
BLAKE2b-256 | 675c72f2be0fe099e487e391fba12a7e41837113b72e60abc122508210952f62 |