Skip to navigation
Logo Penaz's Area

cat /dev/random > penaz

"2DGD_F0TH": Risultati statistici, analisi e pensieri


In questo post darò un'occhiata ai risultati dei sondaggi su twitter, discuto alcuni problemi che sono comparsi e probabilmente dovrò rimangiarmi la parola.

Questo è il seguito di un altro post: Leggi "2D Game Development: From Zero To Hero - 2 anni dopo" prima.

Ci sono pochissime cose che detesto più di dovermi rimangiare la parola. Cerco sempre di mantenere le mie promesse, a volte a mio stesso scapito.

Questo volta, devo rimangiarmi la parola, almeno in parte, e spiegherò il motivo qui.

Attenzione: questo post contiene linguaggio tecnico, cercherò di semplificare quanto più possibile, ma potrei non riuscirci.

I sondaggi

Il 26 Gennaio, ho deciso di aprire un paio di sondaggi, della durata di 7 giorni, per capire cosa si aspettasse la gente dal progetto in un futuro prossimo.

La prima domanda riguarda il formato: ho chiesto quale formato fosse preferito per il libro, tra i seguenti:

  • PDF (27.3%)
  • EPub (18.2%)
  • Sia EPub che PDF (54.5%)
  • Online (0%)

Possiamo vedere che oltre la metà dei votanti (11 per la precisione), vorrebbero vedere un doppio rilascio PDF ed EPub.

La seconda domanda riguarda la prossima "edizione" da rilasciare, per vedere quale linguaggio dovrei coprire:

  • Lua (60%)
  • C# (40%)
  • Altro (0%)

Possiamo vedere che Lua ha vinto con il 60% dei voti (purtroppo solo 5 persone hanno votato).

I linguaggi

Conosco un buon numero di linguaggi di programmazione, come C++, Python e Java, ma non posso conoscerli tutti.

Lua sta in una posizione un po' strana: riesco a leggerlo, riesco a farci delle piccole cose (alcuni filtri che uso per produrre questo libro sono scritti in Lua), non sono un "esperto".

Lua è inoltre un linguaggio alquanto peculiare: non ha alcun sistema di classi, ma possiede delle caratteristiche di metaprogrammazione alquanto potenti (quindi se volessi, potresti creare un "sistema di classi" da zero), ed ha un tipo complesso molto potente chiamato "tables" (tabelle).

Tradurre il codice presente verso il linguaggio Lua sarebbe un compito molto grande e complesso per me.

Sono un novellino totale per quanto riguarda C#, ho iniziato ad impararlo in passato, sperando di imparare qualcosa di nuovo e riaccendere la mia voglia di imparare. Purtroppo mi sono fermato.

Creare una edizione in C# sarebbe una buona scusa per imparare nuovamente C#, ma sarebbe comunque un compito pesante.

I formati

Questo è un altro punto dolente del progetto: per ora (e per il futuro prossimo), un'edizione in EPub non è possibile.

Vi sono molteplici motivi e li esporrò uno dopo l'altro.

PDF Integrati

Per mantenere immagini nitide nel libro, ho deciso di fare uso di file "PDF Vettoriali", che consentono all'utente di ingrandire le immagini a piacere senza avere un aspetto "pixellato".

Sul lettore di libri di Calibre, queste immagini non sono visualizzate, e ricevo un sacco di errori in console a causa del "sandboxing". Non ho indagato ulteriormente.

ERROR: clbr://internal.sandbox/book/__index__:0: Failed to load 'clbr://internal.sandbox/book/EPUB/media/file1.pdf' as a plugin, because the frame into which the plugin is loading is sandboxed.

Formule Matematiche

Un altro problema è dovuto alla matematica: alcuni pezzi di matematica LaTeX che ho usato non sono riconosciuti e convertibili in MathML:

[WARNING] Could not convert TeX math '180\degree', rendering as TeX:
  180\degree

Questo è un esempio semplice, ma matrici ed altre formule sono parte del problema, solitamente a causa dell'uso di \degree , \textcolor o \bcancel .

Questi errori non fermano l'esecuzione della build, ma mi lasciano con un ebook rotto, senza alcuni pezzi.

LaTeX integrato e Listati di codice Dinamici

Ci sono state alcune situazioni in cui avevo veramente bisogno di qualcosa (come una tabella) fatta esattamente in un certo modo, e non volevo creare un'immagine, quindi ho deciso semplicemente di integrare del codice LaTeX all'interno del documento Markdown.

\begin{table}[H]
    \centering
    \caption{Karnaugh Map for A XOR B}
    \begin{tabular}{|c c|c c|}
        \hline
        & & \multicolumn{2}{c|}{A}\\
        & & \textbf{0} & \textbf{1}\\
        \hline
        \multirow{2}{*}{B} & \textbf{0} & 0 & 1 \\
        & \textbf{1} & 1 & 0\\
        \hline
    \end{tabular}
\end{table}

Questo non è un problema quando vado a creare un documento PDF: il documento Markdown viene convertito in LaTeX in ogni caso, e il codice LaTeX che ho inserito viene semplicemente "passato di mano".

Il problema è quando devo pubblicare in formato EPub: il codice LaTeX viene completamente ignorato e cancellato. Senza nessuna traccia.

La stessa cosa accade per un'altra grossa caratteristica del progetto: i listati di codice dinamici. Per poter creare velocemente tutte le edizioni, ho creato un comando LaTeX:

\code{nomefile}{descrizione}

Questo significa che la gran parte (se non tutti) dei listati di codice mancano all'interno del formato EPub "in produzione".

Altri Problemi

Oltre a questi problemi, alcuni potrebbero aver notato che la procedura di build su Travis sta fallendo. Non riesco a capirne la causa, quindi ogni volta che rilascio il libro devo aggiornare manualmente le release su GitHub.

Sto pensando di lasciar stare le Release su GitHub e gli Artifact di GitLab in favore di usare semplicemente Butler per inserire i file su Itch.io.

L'ora di rimangiarsi la parola

Ecco che arriva la parte difficile per me: devo ridimensionare i miei piani. E questo vuol dire che devo "rimangiarmi la parola".

Per quanto voglia rilasciare un "ramo EPub" di questo libro, questo non sarà possibile in un futuro prossimo. Molte cose devono essere riviste, dovrei costruire un nuovo template, così come il CSS e l'avantesto.

Purtroppo non vi saranno nemmeno delle edizioni in Lua o C#. Al momento non conosco abbastanza i linguaggi, e non ho il tempo (e soprattutto la forza d'animo) di impararli: il lavoro non mi sta trattando bene, e facendo lo sviluppatore di software, vedere ulteriore codice dopo aver finito di lavorare non è tra i miei desideri.

Il futuro del progetto

Il progetto è al momento in pausa: come ho detto, il lavoro mi sta trattando male, e voglio provare a riguadagnare un po' di energia prima di cercare di inserire nuovo contenuto. Preferisco concentrarmi sulla qualità piuttosto che sulla quantità, al costo di dover aspettare molto di più per un nuovo rilascio.

Quindi possiamo dire.

Vi sarà una versione Epub in un futuro prossimo .

Vi saranno edizioni Lua e C# in un futuro prossimo .

Semplicemente non ora.

Lavorerò per ridurre l'ammontare di LaTeX e migliorare la compatibilità ed abbassare la barriera d'entrata per chi vuole contribuire, rendendo il libro più "universale" e semplicemente migliore.

Questo progetto ha un pochino di fama, nel suo piccolo, alcune persone l'hanno aggiunto alle proprie "collezioni" di Itch, i download quotidiani sono "bassi" ma non sono costantemente a zero.

Purtroppo non penso questa fama sia "sufficiente" per permettermi di "raddoppiare il mio carico di lavoro" (creando ulteriori edizioni). Potrebbe essere che in questo momento sia il mio perfezionismo a parlare, ma voglio veramente veder crescere questo progetto.

Su GitHub questo progetto è bloccato attorno alle 45 stelle (7 su GitLab) ed al momento non si muove da lì.

Personalmente credo che questo sia un buon progetto. Davvero. Mi sto ripetendo, ma voglio vedere questo progetto crescere, e magari in futuro vedere qualcuno pubblicare il proprio primo videogioco e dire "Ho iniziato da qui, da questo libro".

Cosa puoi fare

L'unica cosa che posso chiedere è, se vuoi, di prendere un attimo di tempo e diffondere questo progetto. Non costa nulla ed ha effetti enormi, tali effetti li ho già visti.

Questo progetto è gratis e rimarrà gratis per sempre, vuole essere un punto di partenza per chiunque vuole creare un videogioco.

Concludo questo post con il link alla pagina Itch ufficiale del libro.

Link alla pagina Itch.io del libro

Se avete suggerimenti, inviatemi pure un tweet o aprite una Issue su GitHub, i miei social sono in fondo al blog.

Grazie per aver letto questo lungo discorso vuoto, e se avete deciso di diffondere il progetto, vi ringrazio il doppio.

Penaz.