October 2018 challenge

SomethingSomething - Procedural Sound

Posted by lucio on 2018/10/15 05:55

I think i will do a game with a sorta real time sound synthesis engine. Generating numpy arrays on the fly and queueing them with pygame's channels. Maybe pyglet for ui if i can mix them.

4 comments

The return of saluk - Basic Spec

Posted by saluk on 2018/10/14 01:29

Overview

The game will be an asynchronous digital card game. Players will download the client. From there they play the game, which actually takes place on a server. The state of a players game is saved until the game ends, either with a victory or with a player conceding. If both players are connected, it will seem as if the game occurs in real time - though like most card games players take discrete turns, each of which is made up of a series of ordered actions. However, if you connect to a game that you are involved with but had been disconnected, you will see a replay of what happened while you are gone, and can resume your turn.

Client

The client will be written in Kivy. Currently I can build something that works well for OSX or ios. I'm still working on android support - for some reason the build I have has a terrible lag for the touch inputs that really won't fly. I also should be able to do windows pretty easy - just haven't given it a shot yet.

  • Menu for how to get into a game
  • Apply model to graphical interface
  • Animate model state changes into interface
  • Send commands to server based on player input to the interface according to model
Server

The server must handle a series of ongoing games, user accounts, and then state transitions for each game. Since there is no actual synchronous play (it is all discrete state changes) I intend to use a lightweight REST server like hug to manage the networking. The general algorithm looks something like this:

  • Client sends an action command - this is tied to a specific way to change the model
  • Server checks if the player in this state is authorized to make that move
  • Server updates the model
  • Server returns an acknowledgement or an error along with the new model state
  • Clients will also periodically poll for whether the state has updated, and get the new state
Model

The client and server are somewhat dumb in this sense, where the model has the guts of the actual game implemented.

  • Contains some information about the Players involved
  • Contains a Game definition
  • Contains Spaces - these are places that Things can go. Those Things have a Position defined by the Space
  • Spaces contain Things. Things are elements like cards or tokens. Things contain both Static properties and Dynamic properties
  • Each type of object (player, game, space, thing) includes Triggers and Actions
  • Calling an Action is the only way to cause the model to transform. An action results in an updated model, or an error state
The model will exist on the server as well as the client. The client can "look ahead" by attempting to perform Actions and seeing the new state or error cases. This can help with giving feedback to players on what actions are possible in a given board state. Only highlighting cards that they have resources to play for example. In this way, the client can be made slightly more smart - but I can keep scope low by only implementing some of these things as time permits, while still enforcing the rules in a cheat-proof way on the server.

2 comments

The return of saluk - (Re)-intro

Posted by saluk on 2018/10/12 18:33

I program python for my job, but it is all test cases and selenium. For games I haven't used python in a long time, and lately have been feeling nostalgic for all of the fun game programming I used to do.

So what have I been doing gamewise in the last couple years if I haven't been using python? Well, it's been a little bit of unity, chasing the early VR craze, which was quite fun but I feel pretty over it as the market is really challenging. Not enough people have headsets, and many who do are looking for a specific kind of thing. I usually tend to make very experimental games, and the anti-gravity 3d space pool game I made was no exception. You can see some video of it at the steam page here. Hmm. I should really do another update!

I've also been thinking about and experimenting with analogue game design - board games and card games. It's been a great experience for several reasons. First, without having to worry about programming, you get to the raw gameplay much faster and can answer questions like "is this mechanic good" or "what affect does this change have" much faster. On the other hand, I've found that without being able to rely on the whiz bang of multimedia, you really have to execute strong. I recommend any budding game designers give it a try - you'll learn things you didn't know you didn't know!

There seems to be a lot of cool things happening in this space as well, with card games like keyforge and warhammer champions shifting paradigms in the physical realm, and hearthstone and tabletop simulator bringing analog gaming into the digital space in exciting ways.

So, I'm burned out on 3d, jazzed up about card games, and nostalgic about game development with python. What better excuse than pyweek to make on a digital board game of some kind?

My plan is to build a client/server implementation of a digital card game. The game design itself will be based on the theme, the client/server I will be experimenting with before the competition starts, (but not writing any code.) I will be using kivy, to enable the client to be available on mobile and desktop platforms. And I intend for the server, written with simple http requests using hug to allow both realtime and asynchronous play.

Ambitious I know. It wouldn't be pyweek without some early big dreams that are dashed on the rocks of the reality of the last days.

Add a comment

Team probably just - Well, my company is making me take python 101 training

Posted by ikanreed on 2018/10/08 17:03

So... right now I'm supposed to be learning how triple quote strings and upper() work and bored out of my mind.  Guess I'll take the opportunity to blog about what I hope to accomplish.


  1.  I'd love to make a machine learning game of some kind.  Bit of a pipe dream in the timeframe we have, but maybe the theme will make an obvious case to fill out?
  2. Art is going to be hell, I'm so used to having teammates who are good at it.  This year, I'm alone.  Unless I drag my wife into it, and I don't know that she'd enjoy that considering she's already doing a seperate game art contest this month.
  3. I want to use my new (kinda expensive) music tools to make some awesome stuff.  Or flail wildly at it, in particular all week and not have any time for code.
  4.  I really want to lean hard into the theme, and make something that really beats a deceased equine organism with whatever connection I come up with.  Some past occasions I've been super light-and-free with theming, and I want to avoid that this time.
  5. Networking?????

Add a comment

TBA - Pygame Zero and PyInstaller working together

Posted by AnthonyB on 2018/10/08 04:07

So I've managed to get Pyinstaller working with Pygame Zero packaging up a script, and it's actually not been too hard to get working, once I figured out a few quirks.

You can see the source code in this gist, which just loads and runs the Pygame Zero demo directly. I haven't tested this *thoroughly*, so (eg.) importing something in the main script may blow up - caveat emptor, etc.

If you're feeling brave and want to help test by running the demo itself, you should be able to download the .exe from Google Drive. Note that you'll need a gamepad with joystick that's recognised by Windows - please let me know if you manage to run it successfully.



Add a comment

TBA - Getting set up for PyWeek

Posted by AnthonyB on 2018/10/04 07:02

Open offer: if you're stuck on something Python related (doesn't even have to be Pyweek related!), drop me a line either as a comment on my entry, or in the IRC #pyweek channel and I'll see if I can help you out.

Quick kinda-brag: I hacked joystick support into PyGameZero and made a demo. You might like it if you're entering PyWeek:

Alien shooting a laser

There's a video at https://twitter.com/AnthonyBriggs/status/1039070401366650880, with a link to a gist in the replies (though bear in mind you'll need my version of PgZero with the joystick and mirroring patches applied). I'll put up a link to it as a test of the packaging process at some point soon.

4 comments