PDA

View Full Version : [???] - Programmare giochi(NI)


martino.ugolini
28-03-2010, 14:03
Salve,
Vorrei imparare a creare dei giochi. Non giochi 3d (So già che è impossibile da solo e difficilissimo). Intendo giochini semplici 2d, come quelli in internet sulle pagine web. Se ho capito bene bisogna imparare action script o flash, ma in internet ho trovato poco. Sapreste consigliarmi un qualche libro cartaceo o una guida internet per imparare a creare questo tipo di giochi?

grazie in anticipo

PGI-Bis
28-03-2010, 14:20
In partenza ti servirebbe un libricino introduttivo, tipo core techniques and alghorytms in game programming, developing games in java. Giusto per le tecniche di base che sono elementari ma quantomeno un'idea bisogna averla.

Comunque con o senza libro, un editor di giochi ti mette direttamente in pista senza patemi.

Ce ne sono a vagonate (cerca "2D game editor" e vai con quello che ti sconfiffera di più).

Conta che il 110% dei problemi nella creazione di un gioco in 2D o 3D è negli asset: immagini, suoni, modelli, animazioni, uno o ha l'abilità artistica, e allora ci mette una vita a crearne abbastanza da farci un gioco, o non ce l'ha, e allora o gli viene l'idea a là tetris, e fa un gioco coi cubi, o si trascina nei secoli cercando in rete delle risorse che non ci sono.

lefantome
28-03-2010, 16:00
Salve,
Vorrei imparare a creare dei giochi. Non giochi 3d (So già che è impossibile da solo e difficilissimo). Intendo giochini semplici 2d, come quelli in internet sulle pagine web. Se ho capito bene bisogna imparare action script o flash, ma in internet ho trovato poco. Sapreste consigliarmi un qualche libro cartaceo o una guida internet per imparare a creare questo tipo di giochi?

grazie in anticipo

ma sai già programmare?

cmq puoi anche lavorare su giochi 3d naturalmente non potrai arrivare alla qualità e complessità dei giochi odierni però

Puoi usare tante tecnologie diverse o tool alcuni sono più facili altre meno ma una volta imparate ti daranno più possibilità e controllo.

Per i tool puoi usare: Unity,Game Maker gli altri non te li consiglio.

Per il resto puoi usare C# e XNA, C++ con SDL, Directx o OpenGl, Flash e actioscript


Qui troverai info e gente che ti potrà aiutare www.indievault.it

Per le guide ci devi dire cosa sai fare

martino.ugolini
28-03-2010, 16:10
I linguaggi che sò sono c++ (Solo ANSI, niente Api ecc.) e visual basic .net (Ma non penso che serva molto :D )

Ho iniziato a guardarmi questo game maker, ma non si capisco molto.

lefantome
28-03-2010, 16:16
I linguaggi che sò sono c++ (Solo ANSI, niente Api ecc.) e visual basic .net (Ma non penso che serva molto :D )

Ho iniziato a guardarmi questo game maker, ma non si capisco molto.

allora lascia perdere game maker e ti consiglierei di lasciar perdere anche flash a meno che tu non sia bravo a disegnare/animare.

Se ti interessa imparare ti conviene iniziare con:

C# & XNA - Sarà molto più semplice iniziare

C++ & Directx o opengl - curva di apprendimento molto più alta.


Ti consiglio di prenderti learning xna 3.0 per iniziare con xna

per directx e opengl andrà bene un qualsiasi libro per princiapianti. io ho preso ora beginning directx10 game programming dato che ho scelto di usare le directx.

e hai problemi in quel sito troverai gente competente

martino.ugolini
28-03-2010, 16:24
Andrei allora su c++ e opengl (Ma si possono fare anche cose 2d, o soltanto 3d???) Quale libro mi consigliate per iniziare (Esistono anche in italiano???) Ho trovato un libro, ma che è del 2003. Ci sono stati dei cambiamenti o va bene lo stesso?

Mattyfog
28-03-2010, 16:29
Ma tu vuoi fare giochi per il web o desktop?

Tommo
28-03-2010, 16:32
Casualmente (:asd:) mi trovo a consigliare anche io quel sito :D

Comunque per i giochi 2D consiglio:
-Flash, che può essere usato unicamente come framework via codice ActionScript (FlexBuilder, FlexDevelop etc) come qualsiasi altro linguaggio, non c'entra essere grafici o meno, e sicuramente nella grafica è più prestante e ricco di feature di quella cacatona delle Applet Java;

-C++ e qualche framework 2D come ce ne stanno a tonnellate, come SDL o altri.
Sconsiglio VIVAMENTE le OpenGL e le DirectX in quanto a basso livello sono orientate a giochi GROSSI, e ti obbligano ad usare buffers, matrici, vettori 3d, indici e poligoni che sono concetti completamente estranei al 2D (ma non per questo difficili come dici eh).

-C++ e qualche motore grafico come Ogre3D o Unity, ma qui si andrebbe sul 3D... perchè è più facile fare giochi 3D che 2D con quelli :asd:

PS: OpenGL evitala ora che non sai nulla perchè la documentazione e i libri fanno pena: dal 2003 ad oggi avranno deprecato praticamente tutti gli esempi che puoi trovare nel libro :asd:
Consiglio di ritornarci quando saprai già dove mettere le mani.

lefantome
28-03-2010, 16:33
Andrei allora su c++ e opengl (Ma si possono fare anche cose 2d, o soltanto 3d???) Quale libro mi consigliate per iniziare (Esistono anche in italiano???) Ho trovato un libro, ma che è del 2003. Ci sono stati dei cambiamenti o va bene lo stesso?

si puoi fare anche 2d.

si ci dovrebbero essere stati diversi cambiamenti,cercane un'altro magari

martino.ugolini
28-03-2010, 16:35
io pensavo più a giochi per il web (Tipo run and jump ecc.)

martino.ugolini
28-03-2010, 16:40
Allora,
se ho capito bene, recapitolo:
Per fare giochi semplici 2d posso imparare flash o c++ con qualche libreria.

Mi potete consigliare qualche libro, tutorial introduttivo, qualsiasi cosa per iniziare a capire cosa fare e avere un idea?

Mattyfog
28-03-2010, 16:42
Per il web devi imparare il flash non il c++

lefantome
28-03-2010, 16:43
Allora,
se ho capito bene, recapitolo:
Per fare giochi semplici 2d posso imparare flash o c++ con qualche libreria.

Mi potete consigliare qualche libro, tutorial introduttivo, qualsiasi cosa per iniziare a capire cosa fare e avere un idea?

ah se vuoi proprio fare per forza giochi flash devi trovare guide su actioscript

PGI-Bis
28-03-2010, 16:53
Se già conosci C++ ti conviene usare Java. E' strutturalmente simile a C++, con una sintassi quasi identica, ha tutte le librerie che servono nel pacchetto standard, puoi schiaffare il programma in una pagina web con un'applet e tutti gli strumenti di sviluppo sono gratuiti.

Qui trovi un tutorial su Java2D (le librerie standard per la grafica bitmap e vettoriale)

http://java.sun.com/docs/books/tutorial/2d/index.html

Qui trovi l'ambiente di sviluppo:

http://netbeans.org/

fero86
28-03-2010, 17:18
Se già conosci C++ ti conviene usare Java. E' strutturalmente simile a C++, con una sintassi quasi identica, *harakiri*

queste amenitá mi aspetterei di leggerle da Tommo, non da te :stordita:

con tutto rispetto per Tommo eh, il quale ha scritto anche lui una sonora e gratuitissima minchiata che non quoto perché mi passa proprio la voglia :asd:



@martino.ugolini: esclusi DirectX e OpenGL considera anche che forse per il livello di complessitá a cui vuoi arrivare, almeno inizialmente, é sufficiente anche il solo DHTML, eventualmente con AJAX.

PGI-Bis
28-03-2010, 17:28
Infedele. L'han fatto apposta simile a C++ per arpionare i programmatori C++. Parola di Gosling (sempre sia lodato).

Tommo
28-03-2010, 18:33
*harakiri*

queste amenitá mi aspetterei di leggerle da Tommo, non da te :stordita:

con tutto rispetto per Tommo eh, il quale ha scritto anche lui una sonora e gratuitissima minchiata che non quoto perché mi passa proprio la voglia :asd:

No adesso trovi la voglia e spieghi :asd:

PGI-Bis
28-03-2010, 18:57
Si riferisce alle affermazioni sugli (le) applet Java.

Per altro fero86 ingiustamente definisce quell'affermazione una minchiata.

Infatti fero86 non è al corrente, come invece lo è Tommo, del fatto che Topo Gigio e Pippi Calzelunghe, gli unici due che Sun coi suoi limitati mezzi potè mettere alla scrittura del back end per Java2D, a fronte della possibilità di usare OpenGL su Unix e DirectX su Java optarono invece per accelerare le operazioni di disegno con il budino di carrube. Da cui gli evidenti problemi di prestazioni: più tardi infatti si è scoperto che la carruba fa incollare gli ingranaggi delle CPU a vapore.

Che poi non mi si venga a dire, chessò, che sono stati Sun, IBM, Kodak e Adobe a sviluppare Java2D - giusto i primi quattro cialtroni che capitavano - o che il fu responsabile dello sviluppo di Java2D (tal chet haase) è stato acquistato da Adobe per lavorare sulle performance di flash.

Tommo
28-03-2010, 21:11
OK java2D è fighissimo.

Giustificare ora il fatto che non esiste NEMMENO UN* gioco che lo usi su internet.

*sui portali come newsground, kongregate, e giochi sufficientemente famosi e completi da non essere tech demos.

I fatti sono semplicemente che Java2D bisogna tirarlo per i capelli perchè vada decentemente con Aero, ho fatto l'altroieri una demo con 10000 graphics.fillOval con tanto di double buffering e scattava da fare schifo, windows ha addirittura disattivato l'accelerazione 3D perchè stallava il driver :asd:
E poi è semplicemente poco conosciuto, e poco adatto a fare giochi dato che non supporta nativamente elementi più specifici per i giochi come fa invece Flash. Che per esempio ha un ottimo Level Design Tool se usi Adobe Flash CS...

A parte il trolling e le sparate a zero ci terrei a far sapere che Java lo conosco piuttosto bene e l'ho usato spesso, così come conosco bene la grafica e le alternative.
Almeno io un gioco flash l'ho provato a fare prima di parlarne.

cionci
28-03-2010, 21:39
*harakiri*

queste amenitá mi aspetterei di leggerle da Tommo, non da te :stordita:

con tutto rispetto per Tommo eh, il quale ha scritto anche lui una sonora e gratuitissima minchiata che non quoto perché mi passa proprio la voglia :asd:



@martino.ugolini: esclusi DirectX e OpenGL considera anche che forse per il livello di complessitá a cui vuoi arrivare, almeno inizialmente, é sufficiente anche il solo DHTML, eventualmente con AJAX.
Potresti cercare di avere un atteggiamento un poco più tollerante ? Magari cercando di avere un po' più rispetto per le idee delle altre persone.
Ti ricordo, e non mi sembra che sia la prima volta, che non sei depositario della Verità Assoluta. Io capsico che tu ti senta bravo, ma ricordati che c'è tanta gente che ha più esperienza di te, anche solo qui sul forum.

javaboy
28-03-2010, 23:28
Ti consiglio assolutamente XNA.

Perderai meno tempo a impare c# e xna che a risolvere il primo bug che infilerai programmando in c++. DirectX e OpenGL richiedono troppo tempo e rischieresti di impazzire, unity è un giocattolone carino ma ti toglie tutto il divertimento...

fero86
29-03-2010, 00:38
Potresti cercare di avere un atteggiamento un poco più tollerante ? Magari cercando di avere un po' più rispetto per le idee delle altre persone. magari ho usato delle espressioni un po' forti; tu come definiresti una sparata totalmente gratuita e con argomentazioni zero? te la ricopio, tanto per essere precisi e non parlare del nulla:

-Flash [...] sicuramente nella grafica è più prestante e ricco di feature di quella cacatona delle Applet Java;

e, per chiarezza, non sono le sparate sulla tecnologia Java ad accendermi (me poi, figuriamoci, potete farmene quante vi pare se le argomentate bene) ma piu in generale le voci di corridoio "definitive" come questa, che possono riguardare qualunque tecnologia o prodotto software; per esempio se ne sentono innumerevoli anche su Windows, tanto per citare il caso piu eclatante.



Ti ricordo, e non mi sembra che sia la prima volta, che non sei depositario della Verità Assoluta. altra gente in compenso si fa depositaria della Falsitá Assoluta.



Io capsico che tu ti senta bravo, ma ricordati che c'è tanta gente che ha più esperienza di te, anche solo qui sul forum. sono estasiato dalla sapienza di questi signori. e quindi?

lupoxxx87
29-03-2010, 00:47
e quindi c'è la piazza per mettersi in mostra...

il forum serve per confrontarsi civilmente e trovare nuove idee...

io programmo abitualmente Applet Java usando Java3D.
sinceramente non mi esalta, ma ha degli strumenti potentissimi, come tutto java a parer mio.

ogni programmatore ha il suo stile e il suo linguaggio preferito, e non gli si può dire nulla.

<OT>
15 anni fa programmavo in pascal, e dopo aver fatto il gioco della torre di hanoi in 320x240 mi sentivo strapotente...

adesso faccio interpolazione di superfici, e quando mi vengono fuori delle Exception inaspettate rimpiango i bei tempi di pascal quando tutto era più facile!
</OT>

se odi le voci di corridoio allora proponiti come admin e usa un linguaggio appropriato, con le corrette argomentazioni, per giustificare quello che sostieni e che ritieni non appropriato

PGI-Bis
29-03-2010, 00:59
Ti consiglio assolutamente XNA.

Perderai meno tempo a impare c# e xna che a risolvere il primo bug che infilerai programmando in c++. DirectX e OpenGL richiedono troppo tempo e rischieresti di impazzire, unity è un giocattolone carino ma ti toglie tutto il divertimento...

AH! Ho beccato uno che l'ha provato allora! Dimmi tutto. Com'è, si lascia usare? [edit, parlo di Unity]

...varie...

Ho provato a fare le ellissi.

import java.awt.*;
import java.awt.geom.*;
import java.applet.*;
import java.util.*;
import java.awt.image.*;

public class Ovals extends Applet implements Runnable {
private final Canvas canvas = new Canvas();

public Ovals() {
setLayout(new GridLayout(1, 1));
add(canvas);
}

public void start() {
Thread runner = new Thread(this);
runner.setDaemon(true);
runner.start();
}

public void run() {
final Random rnd = new Random(0);
canvas.createBufferStrategy(2);
BufferStrategy bs = canvas.getBufferStrategy();
Ellipse2D.Double[] ovals = new Ellipse2D.Double[10000];
for(int i = 0; i < ovals.length; i++) {
double x = rnd.nextDouble() * 400;
double y = rnd.nextDouble() * 400;
double w = rnd.nextDouble() * 100;
double h = rnd.nextDouble() * 100;
ovals[i] = new Ellipse2D.Double(x - w / 2, y - w / 2, w, h);
}
long then = System.nanoTime();
while(true) {
Graphics2D g = (Graphics2D) bs.getDrawGraphics();
g.setPaint(Color.BLACK);
g.fillRect(0, 0, 400, 400);
g.setPaint(Color.GREEN);
for(int i = 0; i < ovals.length; i++) {
g.fill(ovals[i]);
}
long now = System.nanoTime();
long frameTimeMs = (now - then) / 1000000;
then = now;
g.setPaint(Color.BLACK);
g.drawString(String.valueOf(frameTimeMs), 300, 300);
bs.show();
}
}
}

Faccio 5 fps. E ho notato una cosa curiosissima che forse è sfuggita alla tua attenzione. Il programma spende il 98% del tempo nel ciclare l'array e il 2% nelle chiamate Java2D.

Final Kapster, Graviroids. Sono due giochi Java2D, molto carini, sopratutto sono la stessa roba di flash.

Il problema è semmai trovare un gioco web che sia decente.

Per gli strumenti di contorno, il problema non è quello. Non è che ci voglia Zichichi per fare un motore di gioco 2D: una volta che le api ti permettono di disegnare un'immagine sei già a posto. Il problema è farsele, quelle immagini: è una questione artistica. C'è gente che riesce a farle con paint, io anche avessi Picasso4000 non disegnerei che picassate (AH AH AH, ridete per farmi contento).

cionci
29-03-2010, 01:00
magari ho usato delle espressioni un po' forti; tu come definiresti una sparata totalmente gratuita e con argomentazioni zero? te la ricopio, tanto per essere precisi e non parlare del nulla:

-Flash [...] sicuramente nella grafica è più prestante e ricco di feature di quella cacatona delle Applet Java;

e, per chiarezza, non sono le sparate sulla tecnologia Java ad accendermi (me poi, figuriamoci, potete farmene quante vi pare se le argomentate bene) ma piu in generale le voci di corridoio "definitive" come questa, che possono riguardare qualunque tecnologia o prodotto software; per esempio se ne sentono innumerevoli anche su Windows, tanto per citare il caso piu eclatante.
Ma non è più semplice discutere con l'utente invece di fare afferemazioni come quelle che hai fatto qualche post fa ? Anzi, forse no, forse è più semplice fare affermazioni come quelle che discuterne...

Tra l'altro con quel genere di post non dai assolutamente alcuna informazione in più a chi ti legge e non dimostri quanto vali, anzi fai solo cattive figure, a scapito della tesi che sostieni.

Tommo
29-03-2010, 01:52
*

Si ma le ellissi non servono proprio ad una mazza in un gioco vero, era un esempio :asd:
Quello che sto cercando di dire è che Flash (che si è PIU' LENTO di Java2D, ma sembra non conti granchè) offre molti più strumenti e "commodities" nello sviluppo di giochi che Java2D, e che sia vero è sotto gli occhi di tutti.
Insomma si parla di forse un paio di giochi in Java2D contro decine all'ora che escono per flash.
Così, andando di pura umiltà, tenderei a credere che un motivo ci sia. Poi magari sottovalutano tutti Java2D eh :rolleyes:

E' che parti da un presupposto forse sbagliato:
non ci vuole niente a fare un motore 2D è vero, l'ho fatto giusto l'altroieri in Java con tanto di scenegraph e rotazioni e cetera...
ma il target di Flash non è mediamente in grado di farlo, e allora il framework quasi brain-dead (che a me in tutta onestà ha dato più fastidio che aiuto, a forza di provare ad aggirarlo) fa la parte del leone, e appunto al'OP consigliavo flash proprio per iniziare e farsi un'infarinatura e ottenere risultati allo stesso tempo...
Java2D non offre le stesse possibilità, e non ti offre un approccio di alto livello chiaro (cioè, offre solo Graphics praticamente), che è molto grave per un principiante che più che come si disegna larobba a schermo non sa i concetti generali come scenegraph/trasformazioni/animazioni/buffering/tiling/scrolling eccetera.

@fero86
mi dispiace tutto sto casino per un trolling così esplicito...
quando mi sbilancio con commenti così assurdamente netti è implicito che sia un'espressione quasi ironica: nessuna opinione può essere così riduttiva.
E allo stesso modo dovrebbe essere evidente che non può essere un dato di fatto ma solo una mia opinione.
Che in questo caso voleva sintetizzare il fatto che a mio parere NON vale la pena usare Java2D per i giochi, anche se per motivi ovviamente molto più sottili e che non era poi così utile approfondire.
Vabè, le prossime volte metterò degli IMHO belli grossi :D

PGI-Bis
29-03-2010, 02:05
Be', nel 15-18 la maggior parte degli stati era in guerra ma non si può dire che fosse una cosa molto furba. Andava per la maggiore.

E vogliamo parlare dello sporco quattrino? Delle tecnologie citate flash è l'unica il cui produttore richieda di sborsare dei soldi. O è uscita una versione free di Flash Builder?

PGI-Bis
29-03-2010, 02:07
Un suggerimento/domanda per chi sa. Se martino.ugolini usasse C++ e un framework tipo Ogre, non sarebbe un po' meno arduo? Non ho mai provato ad usare Ogre, so che fa sia 2 che 3D. Qualcuno ha esperienza? E' ostico?

Tommo
29-03-2010, 03:04
Beh io uso Ogre3D come "main tool", e come dice il nome è molto orientato al 3D.
Ciò non toglie che ci sto facendo un gioco 2D, quindi si può fare...
però non supporta nativamente gli sprites o le animazioni di spirites, quindi si finisce più che altro a fare 3D ortogonale.
Che è fichissimo ma non so se è quello che cerca l'OP :D

E poi Ogre direi che è decisamente ostico per un principiante dall'alto delle sue 470 classi di C++ puro (non vanno usate tutte per forza, ma ci sono...) e non troppo facile anche se sicuramente ben scritto e ben strutturato.
E poi non comprende la GUI, il suono e gli input che sicuramente sono aspetti fondamentali...
però se si vuole vedere com'è un'architettura avanzata di un motore grafico 3D e C++ di buon livello credo sia un'ottima ispirazione, in effetti è sicuramente meglio che partire da OpenGL o DX che della "grafica" in genere insegnano ben poco.

PS: per flash ora c'è FlashDevelop (http://www.flashdevelop.org/wikidocs/index.php?title=Main_Page) che non solo è gratis, è anche opensource.
Mi dicono che sebbene prima fosse inferiore al tool di adobe ora è comparabile come features.

javaboy
29-03-2010, 20:00
AH! Ho beccato uno che l'ha provato allora! Dimmi tutto. Com'è, si lascia usare? [edit, parlo di Unity]


Con unity non mi ci son trovato bene. Se ti piace programmare toglie tutto il divertimento, alla fine non farai altro che ripetere varie procedure manuali attraverso l'interfaccia grafica. Gusti personali a parte, è molto semplice e intuitivo ma ha qualche bug, a volte impiega tempi mostruosi per l'importazione di semplici asset, c'è un buon editor dei terreni ma manca un editor per bsp stile quake. Si può scriptare in python, c# e javascript ma il linguaggio di default col quale son fatti tutti gli esempi, purtroppo è proprio quest'ultimo.

cdimauro
29-03-2010, 20:37
Panda 3D (http://www.panda3d.org/)

Esempi (http://www.panda3d.org/wiki/index.php/Sample_Programs_in_the_Distribution)

:fagiano:

javaboy
29-03-2010, 20:53
Panda 3D (http://www.panda3d.org/)

Esempi (http://www.panda3d.org/wiki/index.php/Sample_Programs_in_the_Distribution)

:fagiano:

Cesare hai mai provato pygame?

cdimauro
29-03-2010, 21:24
Sì, ed è semplicissimo da usare. :)

Ho smanettato un po' con la mia PSP, per la quale esiste un porting di Python, però sviluppavo su PC usando PyGame e un package che emulava la libreria nativa PSP per Python.

Mi sono trovato molto bene: niente fronzoli e funzioni che fanno il giusto che serve senza dover scrivere 2 chilometri di listati per far apparire un punto sullo schermo. :fagiano:

martino.ugolini
29-03-2010, 21:54
Ok, adesso ho un VASSTISSIMO numero di possibili combinazioni e possibilità per creare un gioco in 2d. Giacche sono da quasi 2 anni autodidatta puro e mi sono insegnato c++ ecc. da me, penso di riuscire anche a imparare tutto questo. Il mio probblema è che di solito imparo da libri. Mi potreste dire qualche libro, forse quelli su cui avete imparato vo? Vanno bene anche inglese, ma preferirei ita. Di nuovo grazie a tutti