Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags
(2 edits)

C'est dommage, à vouloir faire trop de POO et des managers par ci et par là, tu as perdu trop de temps et tu n'as pas de jeu. Le problème ne vient pas de la POO perfectible en Lua, mais de la façon dont tu met en place les choses. Je me suis permis de regarder ton code, et je vois des choses complétement inutiles, qui transforment ton code en usine à gaz. Voici un exemple :
dans ton fichier FireBallTilesheet.lua, tu crée une liste :

FireBallTilesheet.lstTile = {}

Puis plus loin dans ton code tu fais une fonction :

function FireBallTilesheet.getListQuad()

    return FireBallTilesheet.lstTile

end

Pourquoi avoir fait une fonction qui retourne cette liste plutôt que d'aller la récupérer directement étant donné qu'elle fait partie de la variable que tu renvoi à même titre que cette fonction, à savoir FireBallTilesheet ?

Ensuite pourquoi créer une variable globale ( FireBallTilesheet ) si c'est pour la retourner en fin de fichier ? une variable globale est accessible depuis n'importe où dans le code, il est inutile de la retourner.

De part cet exemple j'entends que tu t'es mélangé les pinceaux, faisant une usine à gaz, et t'éloignant de l'objectif de la gamejam qui est d'obtenir un résultat dans le temps imparti. Pour cela il faut faire des choix lors du développement, et développer d'une manière rapide.

Je rebondis de manière semi-digressive sur le sujet de la POO pour dire en complément que la tendance à complexifier inutilement le code tend à être inévitable avec elle, même quand on est rigoureux. Je renvoie les curieux aux vidéos (en anglais… à sous-titrer ?) de Brian Will sur la programmation orientée objet, qu’il dénonce tout en défendant la programmation orientée données (séparation des données et des fonctions). Je pense qu’il a raison sur le fait que cette dernière est bien plus naturelle et claire (cerise sur le gâteau, elle est aussi plus performante !! Cf. le système entité-composant (ECS), notamment proposé par des moteurs de jeux). La conférence de Stoyan Nikolov à CppCon 2018 (en anglais aussi…) illustre cela avec un gros cas pratique (au passage, lui trouve que la POO peut quand même servir dans des cas limités, ce qui se discute). Je laisse chacun se faire son avis !

Pour un petit projet, ça se voit peut-être moins, mais rien qu’avec un simple essai un peu plus gros mais pas tant, j’avais déjà senti que le syndrome « usine à gaz même en concevant de manière logique » commençait à me tomber dessus… La séparation des fonctionnalités en bouts situés à divers emplacements résulte ironiquement en du code spaghetti, ce qui est pile un phénomène que l’on cherche à éviter.

Pour revenir au cas présent : la tendance à créer des « gestionnaires » (managers) abstraits illustre pile le coup de tenter de regrouper des choses dans des abstractions n’ayant pas de sens en elles-mêmes, pour tenter de coller à un schéma d’organisation du code. En vrai, il n’y a rien de mal à programmer en impératif (ou fonctionnel ou autre), il faut se décomplexer. ;) On peut être à la fois simple et générique, alors autant ne pas se gêner !