ocadotechnology / aimmo Goto Github PK
View Code? Open in Web Editor NEWA python-based multi-player online educational game for students to play in a class or club setting.
License: Other
A python-based multi-player online educational game for students to play in a class or club setting.
License: Other
There are pros and cons in terms of efficiency and functionality
Choice might depend on #1.
Candidates include:
Similar to how scoring cells should in #25
The nick may need to be moderated by admin to prevent inappropriate content?
The following warning is displayed when running aimmo locally:
$HOME/.virtualenvs/aimmo/lib/python2.7/site-packages/django_autoconfig/autoconfig.py:205: RemovedInDjango19Warning: Default value of 'RedirectView.permanent' will change from True to False in Django 1.9. Set an explicit value to silence this warning.
url(r'^$', RedirectView.as_view(pattern_name=index_view)),
Looking at this github issue and the referenced commit which fixes this, it seems that we need to add url(r'^$', RedirectView.as_view(pattern_name=index_view))
or similar to aimmo/players/urls.py
.
When you submit your program for the avatar, you are never really sure whether you succeeded, it takes long time to load or you lost connection halfway through.
Some popup or a change of state that would notify of successful submission (or otherwise) would be nice.
Premises:
dependent on #5
Don't send the entire map to the workers, have a configurable distance limit.
Open question: Manhattan distance, or rectangle?
Was thinking we could have code showing how to do things like check if cell is obstacle, check other player locations and get score square and pick up locations.
On the program page
The UI currently polls the frontend server constantly for updates.
Implement a solution where the game simulation server pushes updates instead - e.g. using web sockets (or some other better solution that you can think of!)
Possible server-side solutions:
To avoid making players have to know numpy, and to avoid devs having to install it (painful on windows)
The following warning is emitted by example_project/manage.py
(which is executed by ./run
):
No handlers could be found for logger "django_autoconfig.environment_settings.autoconfig"
Once this is fixed, a logged error message is revealed:
WARNING:django_autoconfig.environment_settings.autoconfig:Unable to parse setting SETTINGS_MODULE=example_project.settings (malformed string)
As it will likely be easier for players to work with. Look in WorldMap.get_world_view_centred_at.
I.e. no areas of the map are cut off from others. In world_map.generate_map.
When a new avatar is started, or when a player has been inactive for a while a is removed.
When sending empty program, we are getting:
Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
response = wrapped_callback(request, _callback_args, *_callback_kwargs)
return view_func(request, _args, *_kwargs)
world.player_changed_code(request.user.id, request.user.player.code)
avatar.set_code(code)
self.avatar = Avatar()
Exception Type: TypeError at /api/code/
Exception Value: 'NoneType' object is not callable
Simple check should be enough, but we could use it as a chance to implement an extension of validation or error handling/printing when submitting code.
To make it scale to vast maps
i.e. replace the current method of speculatively starting 4 workers.
Some work here: jishi9@9c86291
When player registers or updates their avatar code.
This will currently break WorldMap.can_move_to, but possibly more.
Probably with lots of popup help, and a cut down world (or several) with just the one avatar in it, before letting the user go through to the main world. This would also help deter people from signing up with loads of accounts, so it should be lengthy and useful the first time around, but arduous the second.
Possibly worth waiting for the game to get more nailed down first, as the tutorial may have to change a lot otherwise?
Depends on #26
Candidates include:
Currently in WorldState.
Amount of scoring blocks should be based on number of players. Place randomly. Maybe try to avoid it starting too close to players? Decide on when to remove them. After a random amount of turns? After a player has accrued a certain amount of score from it?
Also remove the scoring blocks from the initial map generation.
To support versioning functionality e.g. undo/redo. Also, implement undo/redo.
When starting aimmo locally the following message is displayed:
WARNINGS:
?: (1_8.W001) The standalone TEMPLATE_* settings were deprecated in Django 1.8 and the TEMPLATES dictionary takes precedence. You must put the values of the following settings into your default TEMPLATES dict: TEMPLATE_DEBUG.
The value in question is in aimmo/example_project/example_project/settings.py
:
TEMPLATE_DEBUG = DEBUG
The TEMPLATES dictionary maybe the one here aimmo/players/autoconfig.py
(?):
'TEMPLATES': [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
]
}
}
],
After splitting, the two components/systems should communicate via HTTP APIs. Entities that need to be serializable/deserializable between the two components are:
Worker should have two implementations, one that spawns a sandbox, and one that runs locally (for development purposes).
dependent on #5
TODOs can be found in 59ce4b8
Use http status codes to denote success and failure for code submission and change the returned data to be in some form of data structure (probably json) rather than checking whether string.slice(0, prefix.length) == prefix
.
Because it is more intuitive to use.
Show nick for each avatar
And don't break graph connectivity. This is required for #23 in order to make sure resizing map actually increases habitable area.
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.