
Ce moteur est fabriqué dans le cadre de la série Kohi Game Engine sur YouTube (maintenant en direct sur Twitch), où nous faisons un moteur de jeu à partir de zéro en utilisant C et Vulkan.
Le nom Kohi (コーヒー, prononcé "Koh-hee") est une simplification du mot japonais pour "café", ce qui est logique étant donné à quel point j'aime les trucs.
La série YouTube originale est située ici: https://www.youtube.com/watch?v=dhpuu-djobm&list=plv8ddw9k0jpg1beo-rs-0mys423cvlvtj.
Le flux Twitch se produit ici: https://twitch.tv/travisvroman.






Kohi a été un moteur 3D depuis le début, la plupart construites à partir de zéro. Il y aura de nombreuses explications et explorations en cours de route. La série commence comme un tutoriel pour se mettre en service, les explications devenant un niveau supérieur à mesure que les choses progressent pour maintenir le rythme. Nous sommes finalement passés à la diffusion en direct sur Twitch, la plupart du codage se faisant sur un stream avec un travail hors ligne qui est moins intéressant d'être fait hors ligne.
Windows, Linux et MacOS sont tous officiellement pris en charge. Un support d'exécution Android et iOS peut également être ajouté sur la route.
Bien que l'effort le plus élevé soit fait pour réduire les dépendances, chaque plate-forme a des choses qui doivent être installées pour que cela fonctionne.
Installez-les via Package Manager:
gitmakelibx11-devlibxkbcommon-x11-devlibx11-xcb-devInstallez-les via Homebrew ou autre gestionnaire de packages:
gitmakeVous devrez avoir installé Clang 13+ et le SDK Vulkan:
Le plugin audio nécessite une installation d'Openal.
sudo apt install openal pour Ubuntu ou sudo pacman -S openal sur Arch)brew install openal-soft . Remarque Sur les Mac M1 Ceci s'installe sur /opt/homebrew/opt/openal-soft/ , où les répertoires include , lib et 'bin peuvent être trouvés. Le script build-all.sh explique cette version de l'installation. Pour commencer, obtenez toutes les conditions préalables à votre plate-forme actuelle (voir ci-dessus). Après cela, clone le référentiel: git clone https://github.com/travisvroman/kohi .
Notez que vous êtes libre d'utiliser d'autres compilateurs (comme GCC), mais ils ne sont pas officiellement soutenus pour le moment (bien que cela ne devrait pas être beaucoup de travail pour les installer).
Voir les vidéos de configuration de la série pour Windows ou Linux pour plus de détails. La configuration de MacOS se produit considérablement plus tard dans la série à la vidéo 76, lorsque le support est officiellement ajouté pour cette plate-forme.
Il existe 2 types de build disponibles, déboguer et libérer. Le débogage comprend des symboles de débogage et est optimal pour le développement et l'exploration, tandis que la libération est idéale pour les performances. Il existe également un "nettoyage" disponible pour nettoyer les fichiers construits, ce qui est utile lors de la commutation entre le débogage / la libération, ou lorsque des erreurs de liaison étranges se produisent en raison de fichiers manquants (c.-à-d. Les branches de commutation).
Ouvrez une invite de commande ou une instance PowerShell et exécutez le fichier build-debug.bat pour une version de débogage, ou build-release.bat pour une version de version. Il y a aussi un.bat clean.bat disponible.
Ouvrez un terminal et exécutez le fichier build-debug.sh pour une version de débogage, ou build-release.sh pour une version de version. Il y a aussi un clean.sh disponible.
Pour le moment, "Testbed" est l'exécutable qui utilise Kohi. Il doit être exécuté avec le répertoire de travail de /bin . Dans l'invite de commande / PowerShell dans Windows, ou un terminal dans Linux / MacOS, cd bin pour entrer dans le dossier du bac, puis exécuter testbed.exe sur Windows ou simplement testbed pour Linux / MacOS.
Cette panne de structure est basée sur le dossier racine du référentiel. Certains fichiers / dossiers sont omis de cette description car ils ne sont pas importants pour l'image globale.
kohi.core - bibliothèque partagée / .dll. Contient des types, des conteneurs, des lib à chaîne, des lib mathématiques, des utils, etc. ainsi que la couche de plate-forme (Win32, Linux, macOS).kohi.core.tests - une petite collection de tests unitaires pour la bibliothèque de base. Doit être élargi.kohi.runtime - bibliothèque partagée / .dll. Contient la logique de moteur de base ainsi que de nombreux systèmes de moteur de base.kohi.plugin.audio.openal - bibliothèque partagée / .dll. Contient le plugin audio qui utilise Openal comme backend audio.kohi.plugin.renderer.vulkan - bibliothèque partagée / .dll. Contient le plugin Vulkan Renderer, qui sert de backend rendu au moteur pour Vulkan.kohi.plugin.ui.standard - bibliothèque partagée / .dll. Contient l'interface utilisateur standard KOHI, qui contient une collection d'utilisation générale de commandes telles que les boutons, les étiquettes, les zones de texte, etc. Il s'agit d'une interface utilisateur en mode retenu.testbed.assets - contient tous les actifs à charger par l'application de bilan d'essai.testbed.kapp - Application / .exe. L'exécutable de l'application consommant, charge TestBed.Klib, configure / utilise des plugins et d'autres bibliothèques KOHI.testbed.klib = bibliothèque partagée / .dll. Contient le code d'application (ou "code de jeu") spécifique à l'application. Relocation à chaud.kohi.tools.versiongen - application / .exe. Un petit utilitaire qui génère une version utilisant des numéros de version majeure et mineurs passants, et les numéros de construction et de révision générés automatiquement en fonction de la date et de l'heure. Utilisé pour la version des versions de kohi et de plugins.kohi.tools - Une collection d'outils de ligne de commande. Principalement vide pour le moment, mais sera dépensé lorsque le développement des éditeurs commencera..vscode un dossier contenant vs configuration de projet spécifique au code. Voir ici.
L'objectif ici est simple, pour fournir une ressource que j'aurais aimé avoir lors de l'apprentissage du développement de jeux; Un guide complet sur la construction d'un moteur de jeu à partir de zéro, y compris non seulement des décisions de conception, mais pourquoi ces décisions ont été prises. Il convient également de noter que, bien que ce soit une façon de construire un moteur de jeu, ce n'est pas le seul moyen d'en construire un.
Bien sûr, il est également possible d'avoir un moteur de jeu capable de faire des jeux. Une fois que le projet est suffisamment loin, la fabrication d'un jeu sera également réalisée en tant que série sur ma chaîne YouTube.
Il est important de noter que ce moteur n'est pas, et ne sera pas pendant un certain temps, prêt pour la production. Il s'agit d'un outil d'apprentissage et, en tant que tel, n'est pas encore optimisé pour une utilisation dans les produits de qualité de production. Cela finira par changer, mais pour l'instant, il n'est pas prêt pour la production.
Au fur et à mesure que le projet progresse, les contributions communautaires sont les bienvenues via des demandes de traction sur GitHub.
Les fonctionnalités doivent être contribuées via un nom de branche dans le format de feature/<feature name> où <feature name> est remplacé par le nom d'une fonctionnalité ou, idéalement, le numéro d'un problème de fonctionnalité rapporté (Ex: feature/80 ou feature/terrain ).
Les corrections de bogues doivent être apportées via un nom de branche au format de bugfix/<issue#> où <issue#> est remplacé par le nombre d'un problème de fonctionnalité rapporté (Ex: bugfix/80 ). Les corrections de bogues doivent donc avoir un problème associé créé sur GitHub.
Le code doit correspondre au style général du code dans le dépôt. Un guide de style de code sera publié ici à un moment donné dans un avenir proche.
Toutes les contributions sont sujettes à révision et peuvent ou non être acceptées, ou ont des demandes de modification effectuées avant d'être acceptées.
Je développe Kohi pendant mon temps libre. Je n'ai pas de sponsors pour le moment. Si vous aimez mon travail, n'hésitez pas à me soutenir dans ces endroits:
J'apprécierais également grandement les suit / abonnements sur YouTube et Twitch. Veuillez passer le mot!
Votre soutien est grandement apprécié et sera réinvesti dans le projet.