Jump to content
Rpg²S Forum

Thejuster

Utenti
  • Posts

    626
  • Joined

  • Last visited

Posts posted by Thejuster

  1. Al momento i progetti disponibili sono questi

    unknown.png

     

    Le piattaforme supportate sono moltissime, ma serviranno dei test a lungo andare cosa che da solo sarà impossibile da verificare.

    Servirà del tempo, nel frattempo, mi dedico alla versione Desktop Multi-piattaforma.

     

     

    unknown.png

     

     

    Unico problema, e che per ogni piattaforma diversa alcuni shader vanno adattati o addirittura riscritti.

    Per ora come detto mi concentro unicamente sulla versione windows che è quella maggiormente utilizzata dal 90% degli utenti.

  2. Purtroppo al momento non c'è una versione disponibile.

    Tempo fà avevo rilasciato una beta, ma si è rilevato un fallimento.

     

    Numerosi errori e crash del progetto.
    Che pian piano ho risolto e sistemato.

     

    Appena il programma sarà in grado di creare correttamente un mini game del tipo, Parlare correttamente con NPC, ostacoli sulla mappa,

    un numero considerevole di funzioni per gli eventi, rilascerò una prima versione stabile parziale e funzionale.

     

    Non servirà molto tempo.

  3. Possibilità di inserire plugin propri?

    Compatibilità con plugin già esistenti?

    Ecma 5 o 6?

     

    Scusa se queste domande sono già state fatte, non ho avuto tempo per seguire tutta la discussione

     

     

    E' possibile scrivere propri plug-in.

    Compatibilità con altri plugin non è possibile, perché e comunque interpretato dal motore e richiede determinati fattori per funzionare.

    Esempio le API a cui fà riferimento il javascript al motore.

     

     

    Ecma 6 ma con alcune limitazioni

    Non è possibile usare:

     

    Generatori,

    Unicode,

    Moduli,

    Weakmap e Weakse,

    Promises e chiamate di coda.

     

    Esempio di script:

     

    Questo è lo script del TitleScreen,

    da qui puoi notare com'è strutturato e le sue funzionalità

    //####################################################
    //# Default Scene_Title #
    //# Warning: #
    //# This class is vital. #
    //# You can Clear all content in this script #
    //# and make empty all function #
    //# But you cannot remove the file. #
    //# Mire depends on it. #
    //#--------------------------------------------------#
    //# By Mire Dev #
    //####################################################
    
    //Include library
    #include "Bitmap.js" //Bitmap Class
    #include "Window_Base.js" //Window Class
    #include "Screen.js" //Screen Class
    #include "Scene_Manager.js" //Scene Manager
    #include "Audio.js" //System Audio
    #include "Keyboard.js" //Keyboard
    
    
    //Public Variables
    var selected_item = 0; //Selected item on window
    var item = 2; //Max Item on the list
    
    
    //Constructor
    function Scene_Title()
    {
     this.bitmap = new Bitmap();
     this.window = new Window_Base();
     this.screen = new screen();
     this.scene = new Scene_Manager();
     this.audio = new Audio();
     this.keyboard = new Keyboard();
    };
    
    //Initialize the Scene
    Scene_Title.prototype.Initialize = function()
    {
     //Metodo Initialize
     var b = new Bitmap();
    
     //Load Background Image
     b.Cache(0,"data\\GUI\\Title\\Mire.png");
    
     //Load System Skin
     this.window.Cache("System01");
    
     //Creating Window Selectable
     this.window.Add_SelectableItem(0,0,"New Game");
     this.window.Add_SelectableItem(0,1,"Continue");
     this.window.Add_SelectableItem(0,2,"Exit");
    
    };
    
    
    Scene_Title.prototype.Test = function()
    {
    
     //Draw Background
     this.bitmap.Draw(0,0,0);
    };
    
    
    
    //Scene rendering Update
    Scene_Title.prototype.Update = function()
    {
    
     //Draw Background
     this.bitmap.Draw(0,0,0);
    
     //Setup variabile padding
     var wx = (this.screen.GetWidth() - 250) / 2;
     var wy = this.screen.GetHeight() / 2;
     var ww = 250 + (this.window.StandardPadding() * 2);
     var wh = 96 + (this.window.StandardPadding() * 2);
    
     //Draw Selectable Window
     this.window.Draw_SelectableWindow(wx,wy,ww,wh,0,selected_item);
    
    
     //On Key Down pressed
     if(this.keyboard.GetKey() == "down")
     {
     //Cursor Sound Effect
     this.audio.PlaySE("cursor");
    
     //if Selected Item ID are same to full item ID
     if(selected_item == item)
     {
     selected_item = 0; //Back to First
     }else
     {
     selected_item++; //Increment ( Slide down )
     }
     }
    
     //On Up Arrow Pressed
     if(this.keyboard.GetKey() == "up")
     {
     //Cursor Sound Effect
     this.audio.PlaySE("cursor");
    
     //If Selected Item are same to 0 ID
     if(selected_item == 0)
     {
     selected_item = item; //Goto Last Item
     }else
     {
     selected_item--; //Decrement ( Slide Up )
     }
     }
    
    
    
     //On Key Enter pressed Goto Game
     if(this.keyboard.GetKey() == "enter")
     {
     if(selected_item == 0) //Selected New Game
     {
     this.audio.PlaySE("accept");
     this.scene.StartGame();
     }
     if(selected_item == 1) //Continue
     {
     this.scene.Call("Prova");
     }
     if(selected_item == 2) //Exit
     {
     //this.scene.Call("new");
     }
     }
    
    }
    
  4. Figata, sta diventando meglio di RPG Maker (non che ci voglia molto)

    Ma il progetto sarà esportabile su più piattaforme?

     

    Si holy, sfrutta sia l'openGL, DirectX e WebGL.

    Come linguaggio di scripting ho optato per javascript proprio perché è multi piattaforma ed è molto facile apprendere il suo utilizzo.

     

    Volendo, si può riscrivere a proprio piacimento tutto il comportamento del motore.

    nel senso è stato progettato per RPG, ma mettendo mano al javascript si può fare qualsiasi cosa.

     

    Qualche post più sopra https://images-ext-1.discordapp.net/external/3WuII4Z-h0_n8H8HT6PdX2upDQeYHL5uo9cufUyw4nc/http/g.recordit.co/u103ixBwE1.gif

    viene proprio illustrata la conversione del mio shader delle luci, da PixelShader a Fragment Shader.

     

    C'era anche una build per android su google play, ma è stata rimossa perché ritenuta troppo scarsa di contenuti.

    In effetti veniva mostrato unicamente un livello di gioco ed il chara che si muoveva per la mappa.

  5. Ciao ragazzi e da tempo che non scrivo.

    Anche se l'età avanza, ed il tempo scarseggia non ci si ferma mai di rincorrere i propri sogni.
    Porto nuovità su mire.

    A breve sarà disponibile una TechDemo giocabile.

     

    Ho creato una pagina anche su Itch

     

    https://thejuster.itch.io/mire-engine

     

    Si spera magari li di avere un pò di visione ed una qulche collaborazione grafica.

    Al momento ho acquistato un pacchetto di risorse da utilizzare come Anteprima della TechDemo

     

    Proprio per venire in contro a spiacevoli inconveniente tali come "uso di materiale di altri tool"

     

    Nel frattempo ho realizzato un piccolo video dei progressi fatti fino ad ora.

     

    Build delle mappe triplicato ( velocità di compilazione)
    Nei vecchi video serviva qualche minuto per compilare una mappa con piu layer, adesso è quasi istantaneo.

     

    NPC e Nodi ora sono perfettamente funzionali,

    E molte altre modifiche e correzzioni.

     

     

    unknown.png

     

     

     

    Ed altre funzioni come teleport, gestione delle variabili ecc. ecc.

     

    https://cdn.discordapp.com/attachments/278928749246939136/824677476290527253/bandicam_2021-03-25_17-17-57-169.mp4

     

     

     

     

  6. Certo ragazzi, anche io sono contrario e non ammetto l'utilizzo di una risorsa senza aver citato l'autore.

    Anche io realizzo diversi progetti openSource e sò come funziona.

     

    L'obiettivo del programma non è quello di evitare di creditare Cherry, anzi.
    ma di poterlo fare liberamente nei crediti e non quella di avere uno splash screen iniziale fastidioso.

     

    L'obiettivo era questo.

    Cherry ha fatto un gran lavoro, ed'è giusto creditarlo.
    Ma reputo quel logo molto invadente su un progetto personale.

     

    E come dire non sò.

    La nuova merceds 1500 che monta il motore renault.
    sul cofano invece della stella metto il prima il logo renault.

    è un esempio molto simile.

  7. Ciao ragazzi, non voglio creare flame o quant'altro XD

    Rispolverando i miei archivi ho trovato un programmino che feci per un amico.
    Il tutto permetteva semplicemente di rimuovere lo spash screen che avviene quando si usa il plugin per Rpgmaker 2003 di DynRpg.

     

    Magari può servirvi, o no. Fatto sta, che a me non serve perché non uso più rpgmaker da tanti anni ormai.

     

     

    Può essere utile in modo da non avere lo spash screen iniziale ma di poter creditare Cherry in modo diverso.

    Così da essere meno invadente nei "nostri" giochi.

     

    http://www.mediafire.com/file/6tcexv7tqrgn0tg/Dynrpg_Logo_Remover.rar/file

     

    Se avete problemi chiedete pure. Ma ho testato funziona ^^

     

     

  8. Mai sentito phantom brave XD.

     

    Ostacoli non ho pensato a questa possibilità ma è una buona idea.

     

    Live action intendevo che quando si effettua un combo con un alleato appaiono una sequenza di tasti da premere.

    Ogni colpo mancato e un danno in meno fatto al nemico.

     

    Ho voluto distaccarmi dal classico BS e proporre qualcosa che non annoia ma al tempo stesso mantiene il vecchio stile dei turni.

     

    Questo è un BS dove anche il millimetro fa la differenza. Quel video lho caricato durante il post ma è vecchiotto.

    Appena finisco di sistemare alcune cosette faccio un video di una battaglia completa.

     

    I drop ad esempio per prenderli il giocatore deve andarci proprio sopra e raccoglierlo. Non vengono dato alla fine della battaglia ma durante la partita.

     

    Prima di terminare, anche quando i nemici sono tutti KO. C'è il turno di ricognizione dove appunto gli eroi possono prendere gli ultimi drop rimasti se non lo hanno fatto.

     

    Per vedere i likos in azione servirà ancora tempo.

     

    Il BS e tutto dinamico niente di tutto ciò e presente nella scena.

    Tramite una decina di script vengono generati eroi, nemici, ambiente ecc. Ecc.

     

    Insomma sto cercando di realizzare un BS che non annoi il giocatore

  9. Mentre ero nel forum visionando i progetti mi sono accorto che manca proprio il mio.

     

    Alcuni conoscono già questo progetto, Altri invece no.

    Ebbene voglio presentarlo anche se in riardo.

     

     

    ( Logo Realizzato da Saul che ringrazio tantissimo, un vero capolavoro )

    d6dbipc-000ed05e-12fc-4531-958c-55ddca8b

     

    Riassumo la trama perché e veramente estesa,

    Stavo anche scrivendo un libro per non mancare i dettagli.

     

    Si tratta di un RPG fantasy.
    Caratterizzato da delle creatue chiamate Likos Diverse tra loro.
    Dove ognuna di queste, assimilate ad un uomo, dona un potere elementale.

     

    Il gioco consiste ne ritrovare dei sigilli creati da un mago per bloccare un varco temporale creato da dei demoni.

    Da dove fuoriescono queste creature, Malvagie o buone.

     

    L'obiettivo del gioco e ritrovare i sigilli sparsi per il mondo e bloccare il portale dimensionale.

     

     

    Stile del Gioco:

    Il gioco è basato su piu mappe globali open World ed interi curati al dettaglio.

    C'è la possibiltà di giocare utilizzando il Joypad, (Che personalmente utilizzo molto per questo genere di giochi)

    rendendo l'esperienza di gioco ancora più entusiasmante.

    Anche perché il gioco stesso è basato sui tasti del joypad compatibile Play Station.

     

     

     

     

     

     

     

     

    Battle System:

    Il punto forte del gioco.

    Si tratta di un Battle System Tattico Live Action.

    Dove anche il millimetro può fare la diffirenza in un battaglia.

    Ogni Eroe ha un Range di movimento ed un range di attacco. così per i nemici.

    Si possono attuare mosse di preparazione spostando gli alleati in modo da attirare il nemico in posizioni diverse.

     

    L'IA dei nemici o molto flessibile e dinamica e non stupida.

    I nemici tendono ad attaccare l'eroe che rientra nel loro raggio di azione, e valutano se è il caso di attaccare o restare in disparte con gli altri suoi alleati in modo da avere un vantaggio numerico.

    Se due o più eroi rientrano nel raggio di azione di un nemico, il nemico tente ad attaccare l'eroe con meno HP degli altri per avere un vattaggio.

     

    Gli eroi possono evocare Likos assorbiti dai loro simLikos (likos Assimilati)

    e sfruttarne il loro potere in battaglia. Possono eseguire tecniche di attacco o combo se vicini.

    ovviamente utilizzare un combo porterà inevitabilmente la fine de turno anche dell'altro eroe che ha usato la combo.

    Quindi e utile valutare ogni attacco.

     

    Danni o caratteristiche variabili a seconda del tipo di terreno che si incontra e molto altro ancora...

     

     

     

    Battle System Attuale ( Mappa di Debug )

     

    unknown.png

     

     

     

    Vecchio Battle System

     

     

    http://www.makerando.com/makshack/muploads/1424469561.jpg

     

     

     

    Alcune Screenshoot del gioco

     

    http://www.makerando.com/makshack/muploads/1424691520.png

     

     

    http://www.makerando.com/makshack/muploads/1405896468.jpg

     

     

    unknown.png

     

     

    Breve video del Battle System in fase di Debug IA del nemico.

     

  10. Si è fluido.

    Non come il motore di Mire ma gira bene.

     

    Ho solo un piccolo problema da capire.

    Avviando il file html da chrome non va, mentre da edge o firefox si.

    Invece avviando il file html da un webserver funziona su tutti i browser

     

    credo sia un problema di funzionalità, come libreria utilizzo Three.js

     

    Quello che si può fare con Three.js e veramente illitato.

    ecco alcuni esempi

     

    https://threejs.org/examples/

     

    Forse e proprio questa libreria che ha qualche problema boh.

    devo indagare.

    La console non dice nulla purtroppo

  11. Buongiorno a tutti non avendo una sezione ben precisa credo che questa sia la più indiciata.

    In caso contrario potete spostare.

     

    Tempo fà un utente mi chiese come avevo realizzato la skin di Mire e se potevo in qualche modo

    aiutarlo ad averne una simile.

     

    Allora mi venne l'idea di fare dei kit skin per applicazioni, updater, patcher o altro ancora.

     

    Ebbene volevo informarvi che ralizzo skin su richiesta completamente personalizzabili ed animate.

    per .NET o Qt C++

     

    Vi mostro alcuni miei lavori fatti.

     

    Una di queste è Glassing Theme

     

    unknown.png

     

    Controlli come la progress bar o il CollapsableBox sono animati.

    Questa è possibile scaricarla gratuitamente da qui e provarla

     

    Glassing Theme

     

     

    Questa è ancora in fase di svluppo.

     

    unknown.png

     

     

    League of Legend Theme

     

    Questa invece è quasi completa, manca solo qualcosina poi la rendo pubblica.

    Un omaggio ai fan di questo gioco

     

    unknown.png

     

    Anche qui tutto animato, come pulsanti, Immagini che ruotano e vari menu.

     

    Se a qualcuno interessa chiedete pure ;)

     

    Il tutto è realizzato tramite codice puro.

    Niente immagini o roba simile. Unicamente GDI e tanto codice.

  12. 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.

  13. 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.

  14. @Raffa50

     

     

    Qualcosina si e volevo chiarere proprio questi punti.

     

    Prezzo

     

    Per quanto riguarda il prezzo,Per giochi realizzati con Mire, non richiede una licenza particolare.

     

    Perrelease disponibili per Windows, linux e Mac e gratiuto.
    Ciò obbliga però lo SplashScreen di Mire è ne vienta la vendita.

     

    Pagando invece una licenza PRO per una determinata piattaforma, allora è possibile realizzare giochi commerciali a pagamento.

    Senza restrizioni e limitazioni.

     

    Scripting

     

    Mire utilizza Javascript e LUA.

    questo per rendere i giochi realizzati con esso disponibili per altre piattaforme come PS4 etc. ( a questo ci arriviamo tra poco )

     

     

    Battle System

     

    Il Battle System è un sistema laterale molto simile a quello di RPG Maker.

    Tutto scritto in javascript ovviamente e modificable linea per linea dall'utente.

     

     

    Framework e Piattaforme di destinazione.

     

    Il motore di Mire non utilizza MonoGame attenzione.

    MonoGame è utilizzato dall'editor ma non dall'engine.

     

    L'eseguibile varia da piattaforma a piattaforma.

    Grazie ad alcune librerie come EMScripten ed FNA ad esempio, che trasformano l'interno eseguibile in WebGL.

    convertendo tutto l'esegubile in Javascript ed WebGL.

    Per questo Mire riesce a girare su qualuque dispositivo anche mobile senza installare nessun Framework di destinazione.

     

    Ovviamente non è una bella cosa giocare ad esempio su Windows in un pagina web.

    Per questo motivo, se si vuol dare all'utente finale un'esperienza migliore si seleziona la giusta piattaforma ed il suo rispettivo eseguibile.

    Ma ciò non significa che si potrebbe tranquillamente giocare direttamente dal browser.

     

    ad esempio questo è un test output in HTML5

    http://2.42.202.145/MireWeb/

     

    la connesione è lenta perché è indirizzata al mio server ma è giusto per dare un idea.

    è proprio una versione base

  15. Si Mire è in C#, mentre Mappy in C++ che è openSource su git.

     

    Purtroppo quell'eccezzione all'avvio quando si crea un progetto, ancora non capito dove sia il problema.

    In pratica il programma tenta di scrivere un file "recents.dat" che contiene la lista dei file recenti.

    ma per qualche strano motivo, windows blocca la creazione di quel file impedendo l'accesso al programma a scrivere su quel file.

    Anche se lanciato come amministratore.

     

    Per farlo funzionare bere, basta creare il progetto. poi chiudere il programma e riaprire il progetto puff.

  16. @Raffa50 certo, per me non ci sono problemi.

     

    Io ho un unico nemico da tanti anni, ed'è japponese lol.

    per il resto ho tanti amici.

     

     

    Non capisco il tuo interesse a contribuire, visto che tu hai il tuo engine o.O

    Comunque eventuali contributi saranno ben accetti da chiunque :)

     

     

    Semplicemente perché io sono per la produzione. E se posso condividere il mio sapere per ottenere qualcosa di meglio, non vedo dove sia il problema.

    Non è una questione di engine o di prevalenza su un tool o l'altro.

    Ma proprio perché amo programmare e sono per l'open (ovviamente dove posso)

  17. @Thejuster non cercare di tirare acqua al tuo mulino, perchè io non lo faccio :)

    detto questo è ancora un embrione, e manco volevo rendere pubblico il codice, al momento stò cercando di capire la struttura migliore

    so che mancano quelle cartelle che dici tu ;)

    Il mio non vuole essere una cosa super professionale, ma si potranno fare giochi rpg 2d di media dimensione in modo facile e veloce

    stò cercando pure io la strada migliore e veloce

    e ps: al momento carico le mappe di tiled senza laggare ma manca ancora qualche pezzo, appena avrò finito rilascerò una micro demo (e anche il codice)

     

     

    Tengo a precisare una cosa, Mi dispiace solo che forse hai frainteso un mio probabile contributo con un qualcosa che hai vagamente immaginato come "tirare acqua al tuo mulino"

    Anche perché non ne ho bisogno credimi...

     

    Se guardi sul tuo git, avevo fatto Frok del tuo progetto per contribuire, e per questo motivo ti ho scritto quel topic.

    Sono solo rammaricato su questa frase perché credo di non aver detto nulla di male o nulla di cattivo sul tuo progetto.

    Se così fosse, se sbadatamente ho scritto qualcosa che può essere interpretata come un offesa chiedo scusa in anticipo.

     

    Detto questo, Buona fortuna.

  18. 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

     

    http://i.imgur.com/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.

  19. 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;;
        }
    };
    
  20. Carina come idea. Ma ti dò alcuni consigli.

     

    Ho dato un occhiata al codice, ed'è privo di commenti.

    Cosa fondamentale in un progetto OpenSource di questa portata.

     

    Ovviamente io non ho problemi a leggero, o a capirne il funzionamento.

    Ma qualcuno meno esperto che voglia dare anche un piccolo contributo diventa un impresa.

    non sapendo appunto una determinata variabile cos'è ed a cosa fà riferimento.

    O una funzione cosa faccia.

     

    Un Engine Open deve avere una documentazione estesa, il più chiaro possibile.

     

    Fin quando è un programma comune, va bene. Ma quando si tratta di motori, il tutto deve essere commentato nei minimi particolari

    proprio per evitare di perdersi.

     

    Consigli che posso darti ora,

    Ovviamente basandoti su un editor non proprietario, devi stare a ciò che l'editor scrive, di conseguenza adattarti.

    Durante la fase di render ti consiglio di creare una sorta di Fall of View.

     

    Posso dirti che ho testato anche con C++ tramite le openGL ed ugualmente è meno performante del mio motore.

    una cosa è disegnare a video esempio 100.000 sprite ed un'altra disegnarne 50.

     

     

    Mire ovviamente non utilizza nel il primo, e ne il secondo esempio.

    Usa un sistema diverso. anche perché oltre a disegnare se semplici sprite, deve anche applicare shader come le luci differite , ombre, etc.

    eppure su questo lag = 0.

     

    per il resto bella iniziativa.

    Se ti servono consigli o suggerimenti posso darti qualche piccolo spunto.

     

    Edit:
    Ti segnalo il primo bug.

     

    Manca la cartella ProjectStructure.

     

    Eccezione non gestita

     foreach (string newPath in Directory.GetFiles("ProjectStructure", "*.*", SearchOption.AllDirectories))
                    File.Copy(newPath, newPath.Replace("ProjectStructure", projectDir), true);
    

    Evidentemente hai dimenticato di committare la cartella della struttura base del progetto.

×
×
  • Create New...