Nieuw Project: Rival Guns

  • Hoi allemaal,


    Ik heb altijd al een crime-game willen hebben, maar al mijn vorige pogingen om er eentje te maken waren op niets uitgedraaid. Daarom heb ik besloten om nogmaals een poging te doen. :D


    Mijn eerste idee was om gewoon een basic spel te maken, maar dat was niet heel erg uitdagend dus ben ik met helemaal iets nieuws begonnen. Waarvan jullie de basis hier kunnen vinden:
    https://github.com/willemgoossens/Rival-Guns


    Het is, zoals jullie kunnen zien een zelfgemaakt PHP MVC framework met Bootstrap en jQuery aan de frontend. Het is verre van af, maar de basic opzet is er. Feel free to give some feedback.


    Ik weet dat, qua frontend, het verre van vernieuwend is. Het ging er mij vooral over om wat bij te leren over PHP. Misschien dat ik er ooit nog wel eens ReactJS tegenaan plak. Maar ik weet überhaupt nog niet of ik het eindresultaat opensource ga maken of zelf ga publiceren als game, etc.


    Het idee is overigens om een -ietwat- realistischere crimegame te maken. Bij misdaden zal je bv. meteen na een misdaad een nieuwe kunnen begaan. Afhankelijk van wat je allemaal doet, komt dit bij op je strafblad en dat zorgt ervoor dat je "wanted level" omhoog gaat. Zodoende wordt je sneller gearresteerd en gestraft voor al (of een deel van) je misdaden.


    Laat maar weten wat jullie ervan vinden.


    Groetjes,
    Willem

  • Vluchtig even je code bekeken en ziet er top uit, kijk uit naar je verdere ontwikkelingen! In de toekomst komt een stabiele bootstrap 5 voor ons mensen die het framework graag gebruiken en daar zullen ze jquery volledig droppen, zie dat gelukkig net als bij mij enkel het framework zelf de grootste code bevat ook weer goed werk op dat vlak!

  • Vluchtig even je code bekeken en ziet er top uit, kijk uit naar je verdere ontwikkelingen! In de toekomst komt een stabiele bootstrap 5 voor ons mensen die het framework graag gebruiken en daar zullen ze jquery volledig droppen, zie dat gelukkig net als bij mij enkel het framework zelf de grootste code bevat ook weer goed werk op dat vlak!

    Ik ben nog niet helemaal zeker wat ik ermee ga doen.
    Misschien dat ik de volledige backend omvorm naar een API en er een React front-end van maak :)


    Of misschien idd Bootstrap 5?

  • Ik ben nog niet helemaal zeker wat ik ermee ga doen.Misschien dat ik de volledige backend omvorm naar een API en er een React front-end van maak :)


    Of misschien idd Bootstrap 5?

    Zou daar niet op wachten hoor. Wat altijd kan is gewoon upgraden van 4 naar 5 dan of zoals je meegaf waarom inderdaad niet je logic in een API verwerken en front-end react te gebruiken? Mogelijkheden zijn vrij wel eindeloos wat wel opvalt en er zeker een USP kan vormen voor je project is het gehele idee en concept erachter! Vandaar dat ik wel iet wat nieuwsgierig ben naar je verdere ontwikkelingen. ;) Hoop dat je misschien binnenkort een live demotje van gameplay kan voorzien!

  • @MiCa React is voor mij ook vooral iets nieuws. Dus het is sws wel interessant om te proberen.


    Eigenlijk is het voor mij ook gewoon een leuk projectje om wat bij te leren (en omdat ik mij al 10 jaar voorneem om een crimegame te maken). :p


    Ik zal één van de komende dagen eens kijken of ik een live demo erop krijg :)

  • Hiya,


    Nice dat je wilt leren :-). Als je wat feedback wilt; wellicht kan je hier wat mee.


    Composer psr-4;
    Je gebruikt composer maar niet de Autoloading functie ervan. Je registreert nu je eigen autoloading functie. Als je iets van standarisatie in je code wilt voegen (psr-4 inclusief dus namespaces) dan raad ik je aan de autoloading functie te gebruiken.



    https://getcomposer.org/doc/01-basic-usage.md#autoloading



    Controllers;


    In je controllers zie ik eigenlijk constant terug dat je de zelfde models in laad, wellicht met wat logica verplaatsen naar je base class? Of in je middelware afvangen? Voelt op één of andere manier niet geheel lekker om je __construct in je controller zelf aan de te roepen :-).



    Hierdoor heb je ook kans dat je zaken in base controller wordt overschreven. Ik zou zelf iets van een setup() functie o.i.d. creeren welke wordt aangeroepen in plaats van de __construct functie.



    Type hinting


    Soms gebruik je type hinting (executables) en soms niet (controllers) pick one, doe het wel of doet het niet (DOE HET WEL! :-)). En als je dan toch bezig met ook gelijk type hinting voor je return meepakken:



    PHP
    public function foo(string $bar) : string
    {
         return $bar;
    }


    Zelfde programmeren
    Het zelfde programmeren en uniform tabs etc gebruiken is lastig, wellicht een tool als StyleCI? Trekt in één keer je code recht naar een standaard waardoor je code ook een stuk cleaner en overzichtelijker lijkt :-).



    Er zullen vast nog meer tips zijn :-); maar keep up the good work; indereen begint ergens.

  • Ik heb je raad opgevolgd en eens de moeite gedaan om de code op te schonen qua intendation en type hinting.


    Ik heb ook namespaces en de Composer autoloader erin gestoken.
    Er is wel 1 ding dat ik niet snap. Buiten die aanpassing in composer.json heb ik nergens de composer Autoloader "ge-include" zoals je normaal zou doen bij een PHP script. Hoe kan het dat de autoloader dan alsnog werkt?


    Nu ben ik me alleen nog aan het afvragen hoe ik een Model kan laden zonder de __construct functie maar op een nette manier. Zou evt. een constructie met Annotations handig zijn? (Het zou in ieder geval wel een interessante oefening zijn.)

  • Nog enkele andere tips:


    • Maak gebruik van npm. Goed versie en dependency beheer. Vergemakelijkt ook imports.
    • Maak gebruik van ES6.
    • Stop met jQuery. Het is verouderd en omslachtig. Ik zie ook dat je Bootstrap gebruikt. Bootstrap 5, die binnenkort uitkomt, stapt af van jQuery.
    • Je zegt te kijken naar React, maar kijk ook eens naar Vue. Heeft een lagere instap en vind het persoonlijk fijner werken.
    • Maak gebruik van een bundler zoals Webpack (makkelijke instap is iets als Laravel-mix). En dan bijv. gebruik maken van de hot-reload.
    • Waarom een eigen framework? Er ligt dan zo veel gevaar op de loer. Wel leuk uiteraard. Maar kans op fouten, bugs en veiligheidsrisico's is wel goed aanwezig. Ook onderhoudbaarheid is lastiger. Minder documentatie, minder 'ondersteuning' vanuit de community, minder goed overdraagbaar, minder goed up te daten. Makkelijke suggestie hiervoor is, gebruik Laravel.
    • Maak gebruik van user stories.
    • Ik zie dat je doet aan tests. Netjes! Maar doe je ook aan TDD? Zo niet, ook een tip.
  • Nog enkele andere tips:


    • Maak gebruik van npm. Goed versie en dependency beheer. Vergemakelijkt ook imports.
    • Maak gebruik van ES6.
    • Stop met jQuery. Het is verouderd en omslachtig. Ik zie ook dat je Bootstrap gebruikt. Bootstrap 5, die binnenkort uitkomt, stapt af van jQuery.
    • Je zegt te kijken naar React, maar kijk ook eens naar Vue. Heeft een lagere instap en vind het persoonlijk fijner werken.
    • Maak gebruik van een bundler zoals Webpack (makkelijke instap is iets als Laravel-mix). En dan bijv. gebruik maken van de hot-reload.
    • Waarom een eigen framework? Er ligt dan zo veel gevaar op de loer. Wel leuk uiteraard. Maar kans op fouten, bugs en veiligheidsrisico's is wel goed aanwezig. Ook onderhoudbaarheid is lastiger. Minder documentatie, minder 'ondersteuning' vanuit de community, minder goed overdraagbaar, minder goed up te daten. Makkelijke suggestie hiervoor is, gebruik Laravel.
    • Maak gebruik van user stories.
    • Ik zie dat je doet aan tests. Netjes! Maar doe je ook aan TDD? Zo niet, ook een tip.

    Dankjewel voor het advies Tim!
    De front-end is idd compleet achterhaald, maar ik wil eerst even gewoon die back-end helemaal lopend hebben en daarna echt aandacht gaan besteden aan een degelijke front-end. (Hetzelfde voor de user stories: eerst even alle functionaliteiten die ik wil hebben erin steken.)


    De reden waarom ik een eigen framework heb gemaakt is vrij simpel: het is een leerprojectje. Ik wou het mooi allemaal zelf doen. Op zich wil ik ook wel Symfony, Laravel oid leren, maar dan begin ik weer van 0 af. Dus dat gaat waarschijnlijk best wat tijd kosten om het goed te doen.


    Verdorie, nou heb ik ergens weer zin om helemaal opnieuw te beginnen :p

  • Frameworks maken zeker je leven heel wat makkelijker en ook naar upgrades en updates toe. Ze blijven echter wel altijd open-source en voor heel wat bekende frameworks worden er wel dagelijks interessante bugs of exploits gevonden de een wat ernstiger dan de ander. Als je deze weg zou intreden moet je zeker ernstige bugs laten patchen, alhoewel veel frameworks ook dag na dag robuster worden gemaakt.


    Ikzelf zie geen problemen met je eigen framework project! Maar mocht je dit willen verder ontwikkelen zoals je bezig bent kan ik je zeker aanraden om eens een kijkje te nemen op https://cheatsheetseries.owasp.org/ om eens snel te achterhalen waar je applicatie op vlak van beveiliging eventueel nog lekken zou kunnen bevatten, raad je zeker ook aan om 1 onderwerp rustig per keer te benaderen aangezien de cheatsheets zelf wel vrij uitgebreid kunnen zijn!


    En om dieper te gaan op Tim zijn opmerking waarom enkel beperken tot user stories? Personas, use cases, ga evt. ook wat spelen met wireframes kunnen allemaal netjes samenvloeien tot een geweldige user interface en experience naar 't einde toe!


    Veel succes voor welke weg je ook verder wilt!

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!