Skip to main content

Base models and API for Django-based simulations.

Project description

Base models and API for Django-based simulations.

Provides an API compatible with the Wharton Interactive marketplace.

Getting Started

Install simpl-cloud, with the API extras if required:

pip install simpl-cloud[api]

Add simpl to your project’s Django settings module, along with the following settings:

INSTALLED_APPS = {
    # ...
    'simpl',
}
SIMPL_GAME_EXPERIENCE = "simpl.GameExperience"
SIMPL_RUN = "simpl.Run"
SIMPL_INSTANCE = "simpl.Instance"
SIMPL_CHARACTER = "simpl.Character"
SIMPL_PLAYER = "simpl.Player"
SIMPL_LOGOUT_URL_NAME = "account_logout"

Add the following to your project’s URL conf:

urlpatterns = [
  # ...
  path("simpl/", include("simpl.urls")),
]

Architecture Overview

Run objects provide management and configuration of one or more game instances.

Launching game instances

When a player is added to a run, their details are stored in a Player object.

When they start playing your game, they will be attached to an Character object in a game Instance object that will track the progress of their game.

For multiplayer runs, these players will be initially grouped into Lobby object so they can be assigned to a game Instances. A lobby can be marked as ready once it is ready to start.

You can use Run.prepare to create new game Instance objects or manually create these.

Game play URL

The API uses a customizable url endpoint for players. You can specify this by using a custom Player model and overriding Player.get_play_url.

Alternatively, you can specify a SIMPL_GET_PLAY_URL in your settings as a dotted path to a function that receives a player instance and returns the correct url.

Run status

A run has the following statuses:

  • Set up (initial state, until any configuration options are provided)

  • Players prepare (optional step to if your game experience if players can interact with their Instance before gameplay starts)

  • Running (game Instances are running)

  • Debrief (optional step if your game experience provides a different interface after gameplay finishes)

Game Instance status

Each game Instance also has a status:

  • Preparing - waiting to start (Instance.date_start unset)

  • Playing - game in progress (Instance.date_start set but Instance.date_end unset)

  • Ended - game complete (Instance.date_end set)

Player status

Your app may mark a player as having completed the game (with a date).

Custom models

Extend the Simpl Django models by overriding the default classes in your project’s Django settings module:

  • Instance via SIMPL_INSTANCE = "your_app.YourInstance"

  • Character via SIMPL_CHARACTER = "your_app.YourCharacter"

  • GameExperience (only if your app provides multiple different game experiences) via SIMPL_GAME_EXPERIENCE = "your_app.YourGameExperience"

More rarely, you may also want to override the run and player:

  • Run via SIMPL_RUN = "your_app.YourRun"

  • Player via SIMPL_PLAYER = "your_app.YourPlayer"

Your overridden classes should subclass the related simpl.models.Base* abstract models.

The Character class will need two related abstract models, BaseCharacterData and BaseCharacterLinked. This is to make it possible to have character data as a template, not linked to a user or instance.

Auth0

If using Auth0 for social authentication, add the following Django settings to make sure users are correctly logged out of Auth0 and (optionally) redirected after logout:

ACCOUNT_ADAPTER = "simpl.auth0.Auth0LogoutAdapter"
AUTH0_LOGOUT_RETURN_TO = "some.url"

Project details


Release history Release notifications | RSS feed

This version

1.0.6

Download files

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

Source Distribution

simpl-cloud-1.0.6.tar.gz (291.9 kB view details)

Uploaded Source

Built Distribution

simpl_cloud-1.0.6-py3-none-any.whl (312.2 kB view details)

Uploaded Python 3

File details

Details for the file simpl-cloud-1.0.6.tar.gz.

File metadata

  • Download URL: simpl-cloud-1.0.6.tar.gz
  • Upload date:
  • Size: 291.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.7.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.10

File hashes

Hashes for simpl-cloud-1.0.6.tar.gz
Algorithm Hash digest
SHA256 89e4226782f557562ec357b1b600a8f5c1d5079c747dae4387db858f27a7418f
MD5 9899ea7adfaa16ce28e0060baba94035
BLAKE2b-256 02a6ea727634378c92032ec86046dfafd8e29257ce3b0c5cdb7ee96e144d83e0

See more details on using hashes here.

File details

Details for the file simpl_cloud-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: simpl_cloud-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 312.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.7.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.10

File hashes

Hashes for simpl_cloud-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 4233fce1cd90871a741ae2d3a938c0297b2b774cb59349da2ef69547f608dd2f
MD5 0e20d42dec47aefdf23c4e82d556bcf8
BLAKE2b-256 8227af68b63dc868c014d844c5354f9ca4be911bcf4b92bb0ce100b1aa591624

See more details on using hashes here.

Supported by

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