DOMANDA Quale linguaggio usare per un browser game? (rispondete python pls)

fabio_1

Utente Attivo
175
6
Hardware Utente
CPU
i5-6500
Scheda Madre
ASRock H170 Pro4S
Hard Disk
Samsung 850EVO 250GB
RAM
Corsair DD4 2133 C13 2x4GB
Scheda Video
Sapphire R9 380 4GB NITRO
Scheda Audio
Integrata + DAC Audioengine D1
Monitor
LG 24MB56HQ-B IPS
Alimentatore
XFX 550 Black
Case
Corsair Spec-03
Periferiche
Casse Edifier R1800TIII
Sistema Operativo
Windows 7
Ciao.

Sto facendo un gioco online tipo browser game. Allo scopo sto studiando python/django ormai da diverso tempo (e ovviamente html, css, javascript, selenium, etc, etc :muro:).

Ho però letto più volte in questo forum che è un linguaggio adatto solo a certe cose (parlate di collante tra librerie?) mentre per altre perde di efficienza. Mi domando quindi se sia adatto a ciò che sto tentando di fare io. Non nego che spero la risposta sia si :suicidio:

Quindi ecco l'idea del mio progetto. Prima l'ho chiamato browser game. Non sono sicuro sia il termine corretto. Funziona tramite browser, è quindi un sito, un insieme di pagine web, alcune informative, che mostrano tabelle e simili con dati recuperati dal database, altre dispositive, cioè in pratica form tramite cui l'utente sceglie le sue azioni. Tali azioni saranno elaborate e confrontate con quelle degli altri utenti e la risposta sarà data dopo qualche giorno (per dare tempo ad ognuno di agire). Quindi in tempo reale non c'è molto, giusto le pagine informative.

Rispetto a molti browser game, tipo travian, la parte grafica sarà molto ridotta: giusto qualche immagine statica (cioè non gif animate mentre in travian la pagina principale è tutta un'immagine formata da varie immagini più piccole animate) e per il resto può sembrare tipo pagina della dichiarazione dei redditi :asd: anche se spero più attraente (insomma, tabelle, form, menù dropdown, cose del genere e giusto qualche immagine tipo avatar utente, icone).

Inoltre non è un massive multiplayer: qui i giocatori potranno essere poche decine, gli altri sono figure comandate dal PC.

La parte complicata è ciò che ci sta dietro perchè comprenderà molti modelli collegati tra loro e con molti fields. È un gioco di opzioni, ogni cosa dipende da molte altre cose e per ogni cosa ci sono molte scelte. Che arma usi? che materiale è? è di qualità? che livello tecnologico? e contro chi la usi? che armatura ha? etc. I particolari devo ancora deciderli ma se serve per capire posso approfondire il discorso, domandate pure.

Quindi mi domando: ho scelto un linguaggio adatto? parliamone (cioè parlatemene, io ho poco da dire) un pò , anche per dire. Non vorrei arrivare ad un certo punto e vedere che tutto mi diventa lentissimo perchè python non ce la fa a gestire la mole di dati (ammesso sia una mole, non mi rendo conto di cosa costituisca una mole per un moderno PC). Il problema non penso sia di cose che non può fare ma di efficienza.

Grazie
 
Ultima modifica:

pabloski

Utente Èlite
1,929
371
Hardware Utente
Si, si può fare anche in Python e in qualche altro linguaggio che abbia un transpiler per Javascript. Perchè alla fine, il browser capisce solo Javascript. Quindi o lo scrivi tu il codice JS o lo genera un transpiler.

C'è la possibilità di usare Webassembly e i vari compilatori per svariati linguaggi. Ma parliamo di una tecnologia nuova e ancora non del tutto matura. Più in là sicuramente sostituirà pure Javascript.

Allo stato attuale, puoi usare Pyjamas http://pyjs.org/ o Transcrypt https://transcrypt.org/ o https://github.com/metapensiero/metapensiero.pj

Considera che ognuno di questi potrebbe avere delle limitazioni. Quindi potresti trovarti con certi costrutti non supportati o intere librerie che non riescono a compilare.
 

fabio_1

Utente Attivo
175
6
Hardware Utente
CPU
i5-6500
Scheda Madre
ASRock H170 Pro4S
Hard Disk
Samsung 850EVO 250GB
RAM
Corsair DD4 2133 C13 2x4GB
Scheda Video
Sapphire R9 380 4GB NITRO
Scheda Audio
Integrata + DAC Audioengine D1
Monitor
LG 24MB56HQ-B IPS
Alimentatore
XFX 550 Black
Case
Corsair Spec-03
Periferiche
Casse Edifier R1800TIII
Sistema Operativo
Windows 7
Ok, grazie per la risposta. Complice la mia ignoranza in materia mi sento di fare una puntualizzazione che forse non era chiara.
Nella mia applicazione uso Javascript principalmente per raccogliere i dati input che vengono poi trasmessi ad uan django view la quale fa tutte le operazioni necessarie e trasmette i risultati nuovamente a javascript (AJAX) che li stampa su video. Quindi JS si limita a prendere dati e stamparli, non ad elaborarli. Questo perchè voglio tenere i meccanismi che ci sono dietro nascosti. Penso sia anche più sicuro.

Che python possa farlo va bene, lo sta già facendo, anche se ancora sono agli inizi, ma si tratta solo di fare lo stesso genere di cose, solo più in grande. Il punto casomai sarebbe se riesce a mantenere buone prestazioni all'aumentare delle operazioni.

A cosa servirebbero quei programmi che mi hai linkato? a evitare di scrivere codice javascript? In teoria non credo questo sia un problema, almeno non direttamente. Posso tranquillamente scrivere JS. Non so se prevedi complicazioni future e quindi mi stai consigliando di non farlo?
 

pabloski

Utente Èlite
1,929
371
Hardware Utente
Ok, grazie per la risposta. Complice la mia ignoranza in materia mi sento di fare una puntualizzazione che forse non era chiara.
Nella mia applicazione uso Javascript principalmente per raccogliere i dati input che vengono poi trasmessi ad uan django view la quale fa tutte le operazioni necessarie e trasmette i risultati nuovamente a javascript (AJAX) che li stampa su video. Quindi JS si limita a prendere dati e stamparli, non ad elaborarli. Questo perchè voglio tenere i meccanismi che ci sono dietro nascosti. Penso sia anche più sicuro.

Che python possa farlo va bene, lo sta già facendo, anche se ancora sono agli inizi, ma si tratta solo di fare lo stesso genere di cose, solo più in grande. Il punto casomai sarebbe se riesce a mantenere buone prestazioni all'aumentare delle operazioni.
In pratica il backend è in Python e il fronted è Javascript? In questo caso non hai bisogno di nient'altro. Se in Python realizzi solo la logica che girerà su server, sei a posto già così.

A cosa servirebbero quei programmi che mi hai linkato? a evitare di scrivere codice javascript? In teoria non credo questo sia un problema, almeno non direttamente. Posso tranquillamente scrivere JS. Non so se prevedi complicazioni future e quindi mi stai consigliando di non farlo?
Pensavo che volessi realizzare pure il frontend in Python. Ma siccome i browser non hanno un interprete Python, è tecnicamente impossibile. Allora si sono inventati i transpiler, che prendono il codice di un linguaggio X e lo trasformano nel linguaggio Y. Nel tuo caso prenderebbero codice Python e lo tradurrebbero in Javascript.
 

Entra

oppure Accedi utilizzando