
Este motor está hecho como parte de la serie Kohi Game Engine en YouTube (ahora transmitido en vivo en Twitch), donde hacemos un motor de juego desde cero usando C y Vulkan.
El nombre Kohi (コーヒー コーヒー, pronunciado "Koh-hee") es una simplificación de la palabra japonesa para "café", lo que tiene sentido dado cuánto amo las cosas.
La serie original de YouTube se encuentra aquí: https://www.youtube.com/watch?v=dhpuu-djobm&list=plv8ddw9k0jpg1beo-rs-0mys423cvlvtj.
La transmisión de Twitch ocurre aquí: https://twitch.tv/travisvroman.






Kohi ha sido un motor 3D desde el principio, con la mayor parte construida desde cero. Habrá muchas explicaciones y exploraciones en el camino. La serie comienza como un tutorial para ponerse en funcionamiento, y las explicaciones se vuelven más altos a medida que avanzan las cosas para mantener el ritmo. Eventualmente hacemos la transición a la transmisión en vivo en Twitch, y la mayoría de la codificación se realiza en la transmisión con un trabajo fuera de línea que es menos interesante que se está haciendo fuera de línea.
Windows, Linux y MacOS son compatibles oficialmente. El soporte de tiempo de ejecución de Android e iOS también se puede agregar en el camino.
Si bien se hace el esfuerzo más alto para reducir las dependencias, cada plataforma tiene cosas que deben instalarse para que esto funcione.
Instale estos a través del Administrador de paquetes:
gitmakelibx11-devlibxkbcommon-x11-devlibx11-xcb-devInstale estos a través de HomeBrew u otro Administrador de paquetes:
gitmakeDeberá tener CLANG 13+ y el Vulkan SDK instalado:
El complemento de audio requiere una instalación de Openal.
sudo apt install openal para Ubuntu o sudo pacman -S openal en Arch)brew install openal-soft . Nota En M1 MacS, este instalación a /opt/homebrew/opt/openal-soft/ , donde se pueden encontrar los directorios include , lib y 'bin . El script build-all.sh representa esta versión de la instalación. Para comenzar, obtenga todos los requisitos previos para su plataforma actual (ver arriba). Después de esto, Clone el repositorio: git clone https://github.com/travisvroman/kohi .
Tenga en cuenta que es libre de usar otros compiladores (como GCC), pero no son compatibles oficialmente en este momento (aunque no debería ser mucho trabajo para configurarlos).
Vea los videos de configuración de la serie para Windows o Linux para más detalles. La configuración de MacOS ocurre significativamente más tarde en la serie en el video 76, cuando el soporte se agrega oficialmente para esa plataforma.
Hay 2 tipos de compilación disponibles, depuración y lanzamiento. La depuración incluye símbolos de depuración y es óptimo para el desarrollo y la exploración, mientras que el lanzamiento es ideal para el rendimiento. También hay una "limpieza" disponible para limpiar los archivos construidos, que es útil al cambiar entre depuración/liberación, o cuando se producen errores de vinculación extraños debido a los archivos faltantes (es decir, las ramas de conmutación).
Abra un símbolo del sistema o una instancia de PowerShell y ejecute el archivo build-debug.bat para una compilación de depuración, o build-release.bat para una compilación de lanzamiento. También hay una clean.bat disponible.
Abra un terminal y ejecute el archivo build-debug.sh para una construcción de depuración, o build-release.sh para una compilación de lanzamiento. También hay un clean.sh disponible.
En este momento, "Testbed" es el ejecutable que usa Kohi. Debe ejecutarse con el directorio de trabajo de /bin . En el símbolo del sistema/PowerShell en Windows, o en un terminal en Linux/MacOS, cd bin para ingresar a la carpeta Bin, luego ejecute testbed.exe en Windows o simplemente testbed para Linux/MacOS.
Este desglose de la estructura se basa en la carpeta raíz del repositorio. Algunos archivos/carpetas se omiten de esta descripción, ya que no son importantes para la imagen general.
kohi.core - Biblioteca compartida/.dll. Contiene tipos, contenedores, LIB de cadena, Lib Math, Utils, etc., así como la capa de plataforma (Win32, Linux, MacOS).kohi.core.tests : una pequeña colección de pruebas unitarias para la biblioteca central. Necesita ser expandido.kohi.runtime - Biblioteca compartida/.dll. Contiene la lógica del motor central, así como muchos de los sistemas de motores centrales.kohi.plugin.audio.openal - Biblioteca compartida/.dll. Contiene el complemento de audio que utiliza Openal como backend de audio.kohi.plugin.renderer.vulkan - Biblioteca compartida/.dll. Contiene el complemento de renderizador de Vulkan, que sirve como renderizador de back -end al motor de Vulkan.kohi.plugin.ui.standard - Biblioteca compartida/.dll. Contiene la interfaz de usuario estándar Kohi, que contiene una colección de controles de uso general, como botones, etiquetas, cuadros de texto, etc. Esta es una interfaz de usuario en modo retenido.testbed.assets : contiene todos los activos que se cargarán mediante la aplicación Testbed.testbed.kapp - aplicación/.exe. El ejecutable de aplicación de consumo, carga Testbed.klib, configura/usa complementos y otras bibliotecas Kohi.testbed.klib = biblioteca compartida/.dll. Contiene el código de aplicación (o "código de juego") específico para la aplicación. Hot-Relegable.kohi.tools.versiongen - aplicación/.exe. Una pequeña utilidad que genera una versión que utiliza números de versión mayores y menores aprobados, y números de revisión de compilación y revisión generados automáticamente en función de la fecha y la hora. Se usa a las construcciones de la versión de Kohi y complementos.kohi.tools : una colección de herramientas de línea de comandos. Principalmente vacío en este momento, pero se gastará cuando comience el desarrollo del editor..vscode Una carpeta que contiene la configuración del proyecto específica de código VS. Ver aquí.
El objetivo aquí es simple, proporcionar un recurso que desearía tener al aprender el desarrollo del juego; Una guía completa sobre la construcción de un motor de juego desde cero, incluidas no solo las decisiones de diseño, sino por qué se tomaron esas decisiones. También debe tenerse en cuenta que, si bien esta es una forma de construir un motor de juego, no es la única forma de construir uno.
Por supuesto, también existe el objetivo de tener un motor de juego capaz de hacer juegos. Una vez que el proyecto esté lo suficientemente lejos, hacer un juego se hará como una serie en mi canal de YouTube también.
Es importante tener en cuenta que este motor no está, y no lo estará durante bastante tiempo, listo para la producción. Es una herramienta de aprendizaje y, como tal, aún no está optimizado para su uso en productos de calidad de producción. Esto eventualmente cambiará, pero por ahora no está listo para la producción.
A medida que avanza el proyecto, las contribuciones de la comunidad son bienvenidas a través de solicitudes de extracción en GitHub.
Las características deben contribuirse a través de un nombre de rama en el formato de feature/<feature name> donde <feature name> se reemplaza con el nombre de una función o, idealmente, el número de un problema de característica informado (ex: feature/80 o feature/terrain ).
Las correcciones de errores deben ser contribuidas a través de un nombre de rama en el formato de bugfix/<issue#> donde <issue#> se reemplaza con el número de un problema de características informado (Ej: bugfix/80 ). Por lo tanto, las correcciones de errores deben tener un problema asociado creado en GitHub.
El código debe coincidir con el estilo general del código en el repositorio. Una guía de estilo de código se publicará aquí en algún momento en el futuro cercano.
Todas las contribuciones están sujetas a revisión y pueden o no ser aceptadas, o tener solicitudes de cambio antes de ser aceptadas.
Estoy desarrollando kohi en mi tiempo libre. No tengo patrocinadores en este momento. Si te gusta mi trabajo, no dudes en apoyarme en estos lugares:
También apreciaría enormemente los seguidores/suscripciones en YouTube y Twitch. ¡Por favor, corra la voz!
Su apoyo es muy apreciado y se volverá a invertir en el proyecto.