[Ciotoflow] Idea giochino: Dot the Matrix

Delete this message

Reply to this message
Author: Luca Bruno
Date:  
To: Flussi di ciotia.
Subject: [Ciotoflow] Idea giochino: Dot the Matrix
Ieri mi è venuta in mente una idea molto stupida di un possibile giochino
facile da costruire e da mettere in rete. L'idea è quella di trovare una
soluzione che metta insieme la programmazione e le interazioni con altri
utenti. Il risultato di un programma scritto da un utente può dipendere dal
risultato scritto dagli altri utenti, e deve avere espressività limitata.

Ogni utente è una black box, con 1 input e 3 output. Due output per la
visualizzazione umana (immagine + testo), e un output usato da altri
utenti. Quindi alla fine di tutto ci sarà una rete di queste black box, un
circuito.

Ad ogni utente viene assegnato un numero univoco, e gli utenti possono
usare come input qualunque altro utente. Inoltre ogni utente ha un livello.
Ogni utente può avere a disposizione una lista di amici.

Il sistema aggiorna lo stato della rete ogni secondo. Ci sarà un valore di
"tick" del sistema

Per "matrix" s'intende un array bidimensionale di NxN elementi.
Per "dot" s'intende un elemento in una matrix.
Ogni utente ha a disposizione:
- Un solo utente di input che può scegliere in base al tick del sistema.
Può essere scelto tra tutti gli utenti del sistema o tra gli amici.
Es: input = friends[tick % 2].
- L'input dell'utente di input è una matrix di interi.
- ll programma avrà un numero limitato di operazioni possibili.
Es: 100 operazioni possibili
- Il programma ha un unico costrutto iterativo: foreach. Il foreach viene
effettuato esclusivamente sulla matrix di input.
Es: foreach x,y,value { ... }
- L'utente può dichiarare solo due tipi di variabili: vettore 2d e scalare.
Es.: vec foo = <2.6, 3>; num bar = 3.4;
- L'utente ha a disposizione 2 matrix prefissate interne di numeri floating
point: una da usare come variabile temporanea (viene resettata ad ogni
tick) e una da usare come stato interno permanente.
- Le funzioni sono messe a disposizione dal sistema e dipendono dal livello
dell'utente.
- L'output è costituito da 3 matrix sempre NxN. Due matrix sono da
visualizzare nel profilo dell'utente (una immagine, e un testo). La terza
matrix di output è quella che viene usata come input da altri utenti.

Il sistema può prevedere di non dare tutte le funzioni all'utente
dall'inizio, ma man mano che utilizza il sito o raggiunge degli obiettivi
vengono date funzioni più potenti a disposizione (es. la funzione random()
può essere data all'ultimo livello). Si può pensare anche di aumentare il
numero di operazioni possibili, oppure aggiungere un secondo foreach,
aumentare la dimensione dell'output, ecc..

La complessità spaziale e temporale dei programmi scritti dagli utenti è
ovviamente costante.
Il linguaggio da usare per il backend potrà essere qualunque, basta che
l'hosting sia affidabile e gratis.
Vi ho fatto anche un disegnino ahah: http://i.imgur.com/jpLYr.png

--
www.debian.org - The Universal Operating System