Skip to main content

A module to support using pygbag

Project description

pygbag_builder

This is a module to support people who want to make browser game with pygame. Normaly, pygame won't work on web browser but by using pygbag(wasm for pygame), we can publish pygame programs on the internet.

When we use pygbag, we should pay attention to some points.

  • name the main file as main.py
  • call main function with asyncio.run
  • insert await asyncio.sleep(0) into while loops
  • remake some functions into async functions

These points are not fatal probrem if there aren't many while loops. But when we make a little complex games, these points become cumbersome. So, this module aims to support making those game.(This module may not enough to support highly complex game...sorry.)

Install

pip install pygbag_builder

How To

preparation

You should make folder for your project at first. The main file must be main.py and contain main function.

These are sample programs. main.py can import other .pyfiles. The only thing that you should care about is to make main function.

import pygame, sys
import module
pygame.init()
screen = pygame.display.set_mode((512, 512))
pygame.display.set_caption('template')
clock = pygame.time.Clock()

class Class:
    def __init__(self):
        pass
    def loop(self):
        while True:
            break
instance = Class()

def loop():
    while True:
        break


def main():
    color = 0
    while True:
        screen.fill((color, color, color))
        color = min(255, color+1)
        loop()
        instance.loop()
        module.loop()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        pygame.display.update()
        clock.tick(30)


if __name__ == '__main__':
    main()
def loop():
    while True:
        break

commands

pygbag_builder offers these three commands

  • pygbag_builder_main_flow
  • pygbag_builder_make_repo
  • pygbag_builder_set_page

pygbag_builder_main_flow

This is a command to create needed files for pygbag.

please use this command in your project folder

pygbag_builder_main_flow

By using this command, your python files are automatically modified like this.

import asyncio
import pygame, sys
import module
pygame.init()
screen = pygame.display.set_mode((512, 512))
pygame.display.set_caption('template')
clock = pygame.time.Clock()


class Class:

    def __init__(self):
        pass

    async def loop(self):
        while True:
            await asyncio.sleep(0)
            break


instance = Class()


async def loop():
    while True:
        await asyncio.sleep(0)
        break


async def main():
    color = 0
    while True:
        await asyncio.sleep(0)
        screen.fill((color, color, color))
        color = min(255, color + 1)
        await loop()
        await instance.loop()
        await module.loop()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        pygame.display.update()
        clock.tick(30)


if __name__ == '__main__':
    asyncio.run(main())
import asyncio


async def loop():
    while True:
        await asyncio.sleep(0)
        break

:::note warn This part may not work compleately in complex program. In that case, please modify some parts manually. :::

Also, this command creates 'pygbag.yml'(.github/workflows/pygbag.yml)

These files are put in pygbag_builder_build folder which created in your project folder.

pygbag_builder_make_repo

This is a command to make repository automatically. It uses GitHub API so you need GitHub token. This command not only make repository but also runs workflow(pygbag_build).So, You Don't have to change settings. Instead, you have to get GitHub token with necessary permissions. You can get your token from Developer settings in Settings of your account.

Personal access tokens

[Repository access] Select All repositories

[Permissions] These permissions must be Read and Write

  • Actions
  • Administration
  • Contents
  • Pages
  • Webhooks
  • Workflows

please use this command in your project folder

pygbag_builder_make_repo

:::note warn Depending on the timing of the process, sometimes the workflow may not execute properly, In that case, run this command again. You will get an error because the repository already exist, but no problem. Or you can run pygbag_build manually from Action. :::

If you don't want to use token. You have to create repository manually.

https://pygame-web.github.io/wiki/publishing/github.io/

summary

  • run pygbag_build from Action
  • set gh-pages to branch from Settings → pages

pygbag_builder_set_page

This is a command to set gh-pages to branch. It also uses GitHub API. Before using this command, you must check whether pygbag_build workflow is finished.(You can check it from Action)

please use this command in your project folder

pygbag_builder_set_page

If you want to test on https://localhost:8000 before uploading your game, you can use this command.

pygbag pygbag_builder_build

License

This project follows MIT. If you need more information, please look at LICENSE.

pygbag

https://pypi.org/project/pygbag/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygbag_builder-0.1.2.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pygbag_builder-0.1.2-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file pygbag_builder-0.1.2.tar.gz.

File metadata

  • Download URL: pygbag_builder-0.1.2.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pygbag_builder-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e535558192e5533c4661e9cd097d36806e3c89e145bdb0d1c0d66c51432ea09a
MD5 e06a5d5bbf7288d5345c62845d459826
BLAKE2b-256 842a4e0390c381dcc6c1131e5fd394049da27e44ef6745c6d061c4303e903dbc

See more details on using hashes here.

File details

Details for the file pygbag_builder-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: pygbag_builder-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pygbag_builder-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bd8a05b4392aafe3d0b38fb6dbcc15cc0ba69df6b2fb069895193ceb010118b5
MD5 6048c76e55bf15d7d3ec62d645ace5d3
BLAKE2b-256 7bab1ed4b11864308ea5606c528458b80018e1983b0fc2675c15ce31d0d2e417

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page