Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Vai al contenuto

Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Screen Contest #90

Kamikun






  • Si prega di effettuare il log in prima di rispondere
Il Mire OpenSource in C++ - - - - -

    Thejuster
  • Animatore

  • Utenti
  • Rens: 5
  • 0
  • StellettaStellettaStellettaStelletta
  • 592 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#1 Inviato 24 December 2018 - 19:35 PM

Volevo segnalarvi qui questo piccolo progetto.

 

Diciamo che non è un proprio alla pari di Mire, anche perché può sembrare strano per voi.

Ma le prestazioni di Mire scritte in C# superano quelle di C++.

 

Sarà perché ci ho lavorato per 10 anni ed ottimizzato al massimo ogni funzione possibile.

fatto sta che con gli stessi  metodi e procedimenti trascritti in c++ con le OpenGL

risultano essere più lente del motore di Mire.

 

Bada alla chiacchiere.

 

Ho fatto questo piccolo progetto unicamente a scopo didattico.

Diciamo una prova del nove per me. Per vedere fin quando le mie conoscenze del C++ potevano avere limite

o fin dove riuscivo ad arrivare creando un motore interamente in c++.

 

Per ora và alla grande.

 

per chi è interessato o anche curioso.

E' tutto openSource, Cross-Plattform ovviamente,

Anche perché questo progetto lo sto scrivendo direttamente da linux e testato anche su windows.

 

Qui trovate tutto il sorgente

https://github.com/Thejuster/Mappy

 

 

Ecco per ora Juster cosa ha tirato fuori:

 

Editor Principale.

Possibilità di salvare la mappa e caricarla in modalità binaria.

Supporta Little e Big Endian per la codifica dei vari sistemi operativi.

 

 

Screenshot-20181224-193320.png

 

 

 

 

Prototipo Editor di Eventi  come in Mire ( Ma meno elaborato per ora XD )

 

Screenshot-20181224-193629.png

 

Connessioni tra moduli.

e come in Mire i moduli hanno la capacità di scambiarsi informazioni sui collegamenti o sul loro comportamento

 

Proprio come accade in mire settando alcuni flag.

ModuleMessage::ModuleMessage(QString Title, int ID)
{
    Pressed = false;
    ModuleName = Title;
    id = ID;
    setFlag(QGraphicsItem::ItemIsMovable);
    setFlag(QGraphicsItem::ItemSendsScenePositionChanges);
}

QRectF ModuleMessage::boundingRect() const
{
    return QRectF(0,0,100,100);
}

Se volete provarlo, vi serve il compilatore QT.

In Alcune versioni di Linux è QT è già pre-installato perché il KDE Plasma è scritto in QT C++

Lo stesso che utilizzo io. altrimenti bisogna scaricarlo dal sito. che la versione community è gratuita.

 

se riscontrate bug segnalate please.

Nell'occasione, buona vigilia a tutti


Modificato da Thejuster, 24 December 2018 - 19:36 PM.

.eJwFwd12QzAAAOB3cY-tzrrqXdSqUjFsjrgMSTQ


Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat

Artwork by Hrot
Manca ancora lui XD

 

pre_1478077904__new-3.png

______________________________________________________
Produzione Software, Componenti e Controlli

 

logo.png

_______________________________________________________

 

 

2hnwdtw.png

 

*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***

C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET, 
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS

 


Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?


www.makingitalia.net

 

 

 


    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58413 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#2 Inviato 24 December 2018 - 21:59 PM

Buona vigilia anche a te, Juster! ^ ^

 

Ricordo di quando avevi parlato di C++ e C#, bello poter osservare un po' il codice comodamente da github, una piccola occhiata alle classi la do volentieri sperando di capirci qualcosa.

^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Thejuster
  • Animatore

  • Utenti
  • Rens: 5
  • 0
  • StellettaStellettaStellettaStelletta
  • 592 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#3 Inviato 02 April 2019 - 09:43 AM

Porto qualche news anche per questo piccolo progettino nato giusto per sperimentare

fin quando posso arrivare lontano utilizzando c++ come linguaggio.

 

 

IDE Migliorato con funzioni aggiuntive come matita, gomma, salvataggio e apertura di mappe.

Salvataggio in formato binario compatibile con tutti i sistemi operativi ovviamente.

 

Immagine.png

 

 

 

Screen dall'engine

 

Immagine.png

 

 

Utilizzo dei Charaset

 

unknown.png?width=584&height=559

 

 

I Charaset possono essere dinamici con dimensioni diversi e frame diversi.

 

Ad esempio posso utilizzare un Chara grande 3 volte quello standard con 8 frame ad esempio.

Basta specificarlo nel costruttore ed il motore elabora in modo automatico tutti i frame e la suddivisione esatta.

 

unknown.png?width=744&height=558

 

 

Semplicemente creando un vero e proprio oggetto denominato Character.


//@param Nome del file
//@param Numero di Frame

Character *NPC = new Character("Hero1",8);

//Movimento automatico con animazione automatica.
//Si sposta gradualmente in un'altra casella

NPC->MoveDown(); 

Avevo pensato anche di implementare tipo delle azioni comuni.

un IA ad esempio, un percorso da seguire.

 

Per ora ho elaborato un semplice template che poi implementerò quando posso.

#define CH Character

template <class T>
class Action
{
    T value[1000];

private:
    int counter = 0;

public:

     struct TAction
     {   
        public:
        CH *npc;
        DWORD act_id;        
     }

    void Add(int id)
    {
        value[counter] = id;
        counter;;
    }
};

Modificato da Thejuster, 02 April 2019 - 09:54 AM.

.eJwFwd12QzAAAOB3cY-tzrrqXdSqUjFsjrgMSTQ


Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat

Artwork by Hrot
Manca ancora lui XD

 

pre_1478077904__new-3.png

______________________________________________________
Produzione Software, Componenti e Controlli

 

logo.png

_______________________________________________________

 

 

2hnwdtw.png

 

*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***

C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET, 
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS

 


Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?


www.makingitalia.net

 

 

 


    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58413 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#4 Inviato 02 April 2019 - 14:01 PM

Cos'è quel logo Mappy lì in basso? :3

 

Bene per strumenti e character di dimensioni variabili.

Nel secondo parametro si imposta il numero dei frame, ma tali frame come vanno disposti sul file grafico? Sempre divisi per 4 a seconda della direzione? Implementare un sistema più libero con un formato a più direzioni, animazioni idle, ecc...? ^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Thejuster
  • Animatore

  • Utenti
  • Rens: 5
  • 0
  • StellettaStellettaStellettaStelletta
  • 592 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#5 Inviato 02 April 2019 - 15:52 PM

Mappy il logo del progetto XD

 

L'ho fatto con quei generatori che si trovano online gratuitamente.

era molto carino e l'ho utilizzato come logo del progetto.

 

 

Nel secondo parametro si imposta il numero dei frame, ma tali frame come vanno disposti sul file grafico? Sempre divisi per 4 a seconda della direzione? Implementare un sistema più libero con un formato a più direzioni, animazioni idle, ecc...? ^ ^

 

no i frame vanno divisi per animazione di movimenti.

 

Le direzioni ho lasciato le classiche 4, uhm ma penso di poterle far definire all'utente finale.

 

i frame intendo la sequenza di animazioni per un direzione.

 

ad esempio questa screen

 

4 Direzioni * 9 Frame

 

gHpOxaJ.png

 

 

L'algoritmo è molto facile

 

Per la larghezza di ogni singolo frame basta dividere la larghezza dell'intero file, per il numero di frame specificato.


this->char_sizeW = map.width() / TotalFrame;
this->char_sizeH = map.height() / TotalDirection;

int sourceX = iFrame * char_sizeW;
rectSource.X = (m_iFrame / TotalDirection) * char_sizeW;
int sourceY = Direction * char_sizeH;

Al resto pensa l'oggetto Character a tener la posizione, frame, movimenti ed animazione.

 

Aggiungendo semplicemente al metodo update

 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

     makeCurrent();
     glMatrixMode(GL_MODELVIEW);
     glPushMatrix();


     QColor color = QColor::fromRgb(153,204,255);
     qglClearColor(color.dark());

     glShadeModel(GL_SMOOTH);
     glEnable(GL_DEPTH_TEST);
     glEnable(GL_CULL_FACE);
     glEnable(GL_LIGHTING);
     glEnable(GL_LIGHT0);
     glEnable(GL_MULTISAMPLE);
     static GLfloat lightPosition[4] = { 0.5, 5.0, 7.0, 1.0 };
     glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);


         glShadeModel(GL_FLAT);
         glDisable(GL_CULL_FACE);
         glDisable(GL_DEPTH_TEST);
         glDisable(GL_LIGHTING);

         glMatrixMode(GL_MODELVIEW);
         glPopMatrix();

       //Update Cycle Player and NPC ( Character class Object )  
       Player->Update();
       NPC00->Update();
       NPC01->Update();

  }

Credo che cmq l'idea di avere anche più direzioni sia buona rispetto alle classiche 4 che siamo abituati sempre a vedere.


Modificato da Thejuster, 02 April 2019 - 15:53 PM.

.eJwFwd12QzAAAOB3cY-tzrrqXdSqUjFsjrgMSTQ


Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat

Artwork by Hrot
Manca ancora lui XD

 

pre_1478077904__new-3.png

______________________________________________________
Produzione Software, Componenti e Controlli

 

logo.png

_______________________________________________________

 

 

2hnwdtw.png

 

*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***

C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET, 
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS

 


Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?


www.makingitalia.net

 

 

 


    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58413 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#6 Inviato 02 April 2019 - 16:00 PM

Il logo è carino, Mappy quindi! XD

 

4, ma con possibilità di definirle in futuro, non sarebbe male; visto che punti sempre all'ottimizzazione in tutto te la butto lì...

https://www.codeandw...m/texturepacker

magari è fuori scope per il tipo di giochi che il Mire propone, però un texture packer interno all'engine potrebbe essere interessante, non è un tool così comune.

^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Thejuster
  • Animatore

  • Utenti
  • Rens: 5
  • 0
  • StellettaStellettaStellettaStelletta
  • 592 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#7 Inviato 07 April 2019 - 12:00 PM

Uhm non so se può essere utile per un progetto rpg.
Per singole Sprite, avere tutto ottimizzato e una gran cosa. Met per i charaset che sono già ottimizzati per frame e dimensioni credo sia inutile.

.eJwFwd12QzAAAOB3cY-tzrrqXdSqUjFsjrgMSTQ


Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat

Artwork by Hrot
Manca ancora lui XD

 

pre_1478077904__new-3.png

______________________________________________________
Produzione Software, Componenti e Controlli

 

logo.png

_______________________________________________________

 

 

2hnwdtw.png

 

*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***

C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET, 
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS

 


Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?


www.makingitalia.net

 

 

 


    Freank
  • Alex (Rm2k)

  • Utenti
  • Rens: 149
  • 11
  • StellettaStellettaStellettaStellettaStelletta
  • 1439 messaggi
  • Sesso:Maschio
  • Provenienza:Biancavilla
  • Abilitā:Apprendista

#8 Inviato 11 April 2019 - 08:03 AM

che bello vedere che il progetto continua!

un pò meno bello vedere sempre le sprite di rpg maker... 

Dovresti fare una serie di tutorial su youtube per spiegare come funziona e mostrare come fare alcuni giochi!
Sicuramente attirerebbe!


th_95398_Banner_copia_122_1134lo.jpg 2319.png


    Thejuster
  • Animatore

  • Utenti
  • Rens: 5
  • 0
  • StellettaStellettaStellettaStelletta
  • 592 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#9 Inviato 04 May 2019 - 11:12 AM

L'idea è buona mi sa che farò proprio qualche piccolo video tutorial style professional per spiegare i primi passi.
Molti abbandono proprio al primo errore credendo che non funzioni. Ma invece non è così

.eJwFwd12QzAAAOB3cY-tzrrqXdSqUjFsjrgMSTQ


Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat

Artwork by Hrot
Manca ancora lui XD

 

pre_1478077904__new-3.png

______________________________________________________
Produzione Software, Componenti e Controlli

 

logo.png

_______________________________________________________

 

 

2hnwdtw.png

 

*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***

C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET, 
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS

 


Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?


www.makingitalia.net

 

 

 


    Thejuster
  • Animatore

  • Utenti
  • Rens: 5
  • 0
  • StellettaStellettaStellettaStelletta
  • 592 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#10 Inviato 20 June 2019 - 08:01 AM

Credo di aver passato anche questa prova :D

Vi allego una screen delle ultime modifiche e funzionalità.

 

Principalmente, il C++ non è così semplice come il .net da programmare,

E trovare una libreria che faccia esattamente quello che mi serve è pò complicato.
 

Mi sono dovuto creare un interprete JSON ed una classe ad hoc in grado di generare codice JSON compatibile con

javascript nativamente. senza l'utilizzo di tool ad esempio "Node.js" che facilitano il lavoro.

 

Come si nota dalla screen

 

In alto nel menu Tool -> Export to JSON

 

Immagine.jpg

 

 

 

Anche se per la nostra vista è poco chiaro dal blocco notes

 

Immagine.jpg

 

A noi interessa che funzioni.
Ma aprendo il file con un adeguato editor diventa tutto leggibile.

 

Quello che a noi interessa è appunto il risultato finale

 

Immagine.jpg

 

 

Per ora sono abbastanza soddisfatto del risultato e mi fermo un pò su questo progetto.
Magari chissà forse lo continuo quando ho un pò di tempo libero. ( Che mi è molto raro ormai.)

 

Ricordo che tutto e completamente OpenSource raggiungibile da qui: https://github.com/Thejuster/Mappy

 

Se avete vogliadi continuarlo o qualcuno è interessato a capire il funzionamento, potete trovare tutto l'occorrente li sopra.


.eJwFwd12QzAAAOB3cY-tzrrqXdSqUjFsjrgMSTQ


Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat

Artwork by Hrot
Manca ancora lui XD

 

pre_1478077904__new-3.png

______________________________________________________
Produzione Software, Componenti e Controlli

 

logo.png

_______________________________________________________

 

 

2hnwdtw.png

 

*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***

C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET, 
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS

 


Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?


www.makingitalia.net

 

 

 


    Guardian of Irael
  • Coniglietto Rosso

  • Rpg˛S Admin
  • Rens: 195
  • 19
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 58413 messaggi
  • Sesso:Maschio
  • Provenienza:Bagnaia (Viterbo)
  • Abilitā:Apprendista


#11 Inviato 20 June 2019 - 17:08 PM

 

senza l'utilizzo di tool ad esempio "Node.js" che facilitano il lavoro.

Per qualche problema dato o per il voler fare tutto "a mano"? ^ ^

 

Buono il fatto che tutto funzioni senza problemi nonostante verrà messo in pausa.

^ ^


(\_/)
(^ ^) <----coniglietto rosso, me!     
(> <)

 
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
 
KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^
 
FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^  
 
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

Spoiler


    Thejuster
  • Animatore

  • Utenti
  • Rens: 5
  • 0
  • StellettaStellettaStellettaStelletta
  • 592 messaggi
  • Sesso:Maschio
  • Abilitā:Novizio

#12 Inviato 21 June 2019 - 15:11 PM

uhm no semplicemente perché per far funzionare il Node.js serve appunto un server.

mentre nel mio caso ho deciso di fare semplicemente uno stand-alone funzionate senza nessuna dipedenza.

 

quindi in pratica qualsiasi dispositivo in grado di poter aprire una pagina html, può tranquillamente avviare l'output del gioco

senza ricevere nessun errore o una mancata libreria.

 

Apparte che poi il JSON è semplicissimo,

Basta giocare con la manipolazione delle stringe ed ottenere una struttura come si deve.

 

L'undica differenza a non voler usare il Node.js

è che una mappa salvata in formato JSON, non puoi essere letta con il parse.

ad esempio

 

Utilizzando il Node.JS

'use strict';

const fs = require('fs');

let data = fs.readFileSync('mappa1.json');  
let mappa = JSON.parse(data);  

Mentre la mia tecnica sta nel dichiarare un file javascript ma con una variabile che contiene tutta la struttura json.

ed utilizzare l'oggetto come semplice contenitore array senza parsare niente.


Modificato da Thejuster, 21 June 2019 - 15:15 PM.

.eJwFwd12QzAAAOB3cY-tzrrqXdSqUjFsjrgMSTQ


Da Sinistra verso Destra :P
Daemond, Thejuster, OldPat

Artwork by Hrot
Manca ancora lui XD

 

pre_1478077904__new-3.png

______________________________________________________
Produzione Software, Componenti e Controlli

 

logo.png

_______________________________________________________

 

 

2hnwdtw.png

 

*** Linguaggi di Programmazione Conosciuti e competenze Tecniche ***

C#, Javascript, Java, PHP, SQL, Autoit v3, JQuery, HTML, HTML5, C++, VB.NET, 
Android, DirectX, HLSL, XML, Access, LUA, Delphi, Pascal, Assembly, Fortan, Angular JS

 


Tool per la creazione di MMO Rpg. Open Source,
Vuoi far parte del team di sviluppo?


www.makingitalia.net

 

 

 





  • Feed RSS