An experienced developer who mostly codes in Rust these days, but has worked with Ruby, Python, and a lot more programming languages.
Available for contracting opportunities.
A simple multi-user co-op text based dungeon quest game with multiple client options.
License: MIT License
Game Plugins should be placed in separate directories, and main class should automatically load all available games.
game/<name>/main.py - extra web code, will be called on route /game/<name>
game/<name>/plugin.py - main plugin class
game/<name>/views - extra views used by the game and web pages
game/<name>/stylesheets - extra stylesheets used by the web pages
game/<name>/stylesheets/game.css - stylesheet automatically added to game
game/<name>/javascript - extra javascript for web pages
game/<name>/images - images used by game and web pages
Some ideas of things to do in the framework:
Instances need to synchronize with each other.
Either just remove the caching of the Game object in the instance, or call seup() for each request.
API root should display all games, game root should display links to all commands.
Sent via Hubroid
It would be nice to add some social features to Dicey.
Add automatic unit tests for all game actions and necessary methods and metadata.
This can be completely generic, by reading action list from the game metadata and test that all actions return the proper response.
Create a game/app to allow choosing other games.
Will need game specific game.html/game.js working and API call to list all available games.
Templates should be easier to add, there are a lot of places that need to be changed when adding a new template.
Also, stop using game html div:s as transport method for templates, just load via json so that we can use standard django "{{ }}" notation and don't have to worry about escaping problem.s
Sometimes clients don't seem to receive broadcast messages as they should.
The code for the Android app is missing from the repository.
The communication between client and server is a fairly simple REST-like solution.
There needs to be a guide on how to use this to write your own client.
It should probably also describe the HATEOAS similarities.
A tree of texts, where the text in the root node can have placeholder strings. These placeholder strings will match sub-nodes in the tree, and the text from the nodes will be used as replacements.
Each node will also have requirement attributes, meaning that they will have to be met by the attributes in a given value object.
{
text: "It was a dark and stormy night. {{ wet }}",
nodes: [
{
key: 'wet',
text: "{{ value.name }} is drenched.",
reqs: [
"!items HAS umbrella",
]
},
{
key: 'wet',
text: "{{ value.name }} is carrying an umbrella.",
reqs: [
"items HAS umbrella",
]
}
]
}
value.key means to display the value in the attribute 'key' of the given value object.
Requirements:
Comparison operators:
There might be a need to separate actions into actions and GUI elements.
To begin with, each action should have a new attribute: "button" with possible values "active", "disabled" and "hidden"
Active means that the button is visible and clickable to trigger the action. Disabled means visible, but won't trigger action, possible grayed out. Hidden means it won't show at all.
There should be a API request to get the metadata as a hash. Internal API requests such as this need to be prefixed with some sort of namespace to not risk clashing with actions. This resource should be used to setup the client with all the needed buttons, preferrably via javascript so that code won't be duplicated.
Responses should also be able to contain a metadata value which can contain updates to the metadata structure. This will allow letting the game tell the client which buttons are available at any given point. It will also allow games to update the list of available elements in an action argument list.
It hsould be possible to set data types on argument input text fields. I.e. integer, alpha, alphanumeric etc. Should be set as html5 attribute if available, with validity check.
Actions and GUI definitions should be split up.
GUI definition could be saved in a yaml file, and should allow for more elements. Image buttons, text links, input fields directly on the toolbar etc.
Example yaml:
toolbar:
- key: buy
name: Buy
action: buy
type: imgbutton
arguments: ...
- key: chatinput
name: Post
action: chat
type: input
- key: login
name: Login
action: login
type: link
The arguments attribute is the same as arguments on actions today, to open up dialog menus/inputs.
Initially only toolbar needs to be supported, but this could possible also be used to setup menus etc.
When a game is selected on the index page, show game specific links instead of GQ links.
The channel broadcast grouping doesn't seem to work. Games get broadcast messages from other games.
Put all generic javascript code into a GOLDFRAME "namespace" to make it available to all games when adding game specific javascipt.
Write a scaffolding tool.
It should be possible to allow arguments to actions.
An argument can either be a string, a list, or a dictionary. If it is a string, the client should prompt for a user input. A list is a list of elements that the client should let the user select between. A dictionary will be sub-arguments, which will allow for nested selections.
Example:
'arguments': [
{
'type': 'string',
'name': 'Amount',
'description': 'Amount of items to buy',
},
{
'type': 'list',
'name': 'Item',
'description': 'Item to buy',
'values': ['Potion', 'Bomb', 'Dagger'],
}
]
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.