
Este motor é feito como parte da série de motores de jogos Kohi no YouTube (agora transmitida ao vivo no Twitch), onde fabricamos um mecanismo de jogo desde o início usando C e Vulkan.
O nome Kohi (コーヒー, pronunciado "Koh-hee") é uma simplificação da palavra japonesa para "café", o que faz sentido, dado o quanto eu amo as coisas.
A série original do YouTube está localizada aqui: https://www.youtube.com/watch?v=dhpuu-djobm&list=plv8ddw9k0jpg1beo-rs-0mys423cvlvtj.
O fluxo do Twitch acontece aqui: https://twitch.tv/travisvroman.






Kohi tem sido um motor 3D desde o início, com a maior parte do zero. Haverá muitas explicações e explorações ao longo do caminho. A série começa como mais um tutorial para subir e correr, com explicações se tornando um nível mais alto à medida que as coisas avançam para manter o ritmo. Eventualmente, passamos a transição para transmitir ao vivo no Twitch, com a maioria das codificações sendo feita em transmissão com algum trabalho offline que é menos interessante sendo feito offline.
Windows, Linux e MacOS são todos oficialmente suportados. O suporte de tempo de execução do Android e do iOS também pode ser adicionado no futuro.
Embora o maior esforço seja feito para reduzir as dependências, cada plataforma tem coisas que devem ser instaladas para que isso funcione.
Instale -os via gerenciador de pacotes:
gitmakelibx11-devlibxkbcommon-x11-devlibx11-xcb-devInstale -os via Homebrew ou outro gerenciador de pacotes:
gitmakeVocê precisará ter o Clang 13+ e o Vulkan SDK instalado:
O plug -in de áudio requer uma instalação do Open.
sudo apt install openal para ubuntu ou sudo pacman -S openal no arco)brew install openal-soft . Nota no M1 Macs, isso é instalado para /opt/homebrew/opt/openal-soft/ , onde os diretórios include , lib e 'bin podem ser encontrados. O script build-all.sh é responsável por esta versão da instalação. Para começar, obtenha todos os pré -requisitos da sua plataforma atual (veja acima). Depois disso, clone o repositório: git clone https://github.com/travisvroman/kohi .
Observe que você é livre para usar outros compiladores (como o GCC), mas eles não são oficialmente apoiados no momento (embora não deva ser muito trabalho para configurá -los).
Consulte os vídeos de configuração da série para Windows ou Linux para obter detalhes. A configuração do MacOS acontece significativamente mais tarde na série no vídeo 76, quando o suporte é oficialmente adicionado para essa plataforma.
Existem 2 tipos de construção disponíveis, depuração e lançamento. A depuração inclui símbolos de depuração e é ideal para desenvolvimento e exploração, enquanto a liberação é ideal para o desempenho. Há também um "limpo" disponível para limpar os arquivos construídos, o que é útil ao alternar entre depuração/liberação ou quando os erros de vinculação estranhos ocorrem devido à falta de arquivos (ou seja, ramificações de comutação).
Abra uma instância de prompt de comando ou PowerShell e execute o arquivo build-debug.bat para uma compilação de depuração, ou build-release.bat para obter uma compilação de liberação. Há também um clean.bat disponível.
Abra um terminal e execute o arquivo build-debug.sh para uma compilação de depuração, ou build-release.sh para uma construção de liberação. Há também um clean.sh disponível.
No momento, "Testbed" é o executável que usa Kohi. Deve ser executado com o diretório de trabalho de /bin . No prompt de comando/PowerShell no Windows, ou em um terminal no Linux/MacOS, cd bin para entrar na pasta BIN, depois execute testbed.exe no Windows ou apenas testbed para Linux/MacOS.
Essa quebra de estrutura é baseada na pasta raiz do repositório. Alguns arquivos/pastas são omitidos a partir desta descrição, pois não são importantes para a imagem geral.
kohi.core - Biblioteca compartilhada/.dll. Contém tipos, recipientes, String Lib, Math Lib, UTILS, etc., bem como a camada de plataforma (Win32, Linux, MacOS).kohi.core.tests - Uma pequena coleção de testes de unidade para a biblioteca principal. Precisa ser expandido.kohi.runtime - Biblioteca compartilhada/.dll. Contém a lógica do mecanismo principal, bem como muitos dos sistemas de motores principais.kohi.plugin.audio.openal - biblioteca compartilhada/.dll. Contém o plug -in de áudio que usa o OpenLet como back -end de áudio.kohi.plugin.renderer.vulkan - biblioteca compartilhada/.dll. Contém o plugin Vulkan Renderer, que serve como back -end do renderizador do motor para Vulkan.kohi.plugin.ui.standard - Biblioteca compartilhada/.dll. Contém a interface do usuário padrão KOHI, que contém uma coleção de controles de uso geral, como botões, etiquetas, caixas de texto etc. Esta é uma interface do usuário retida.testbed.assets - Contém todos os ativos a serem carregados pelo aplicativo Testbed.testbed.kapp - Application/.exe. O aplicativo de consumo executável, carrega o teste.klib, configura/usa plugins e outras bibliotecas kohi.testbed.klib = biblioteca compartilhada/.dll. Contém o código do aplicativo (ou "código do jogo") específico para o aplicativo. Relatável a quente.kohi.tools.versiongen - Application/.exe. Um pequeno utilitário que gera uma versão usando números de versão maior e menor passada e números de construção e revisão gerados automaticamente com base na data e na hora. Usado para versões de versão de Kohi e plugins.kohi.tools - Uma coleção de ferramentas de linha de comando. Maior vazio no momento, mas será gasto quando o desenvolvimento do editor começar..vscode Uma pasta contendo configuração do projeto específica do código. Veja aqui.
O objetivo aqui é simples, para fornecer um recurso que eu gostaria de ter ao aprender o desenvolvimento de jogos; Um guia completo sobre a construção de um motor de jogo do zero, incluindo não apenas decisões de design, mas por que essas decisões foram tomadas. Deve -se notar também que, embora essa seja uma maneira de construir um motor de jogo, não é a única maneira de construir um.
Obviamente, há também o objetivo de ter um mecanismo de jogo capaz de fazer jogos. Quando o projeto estiver longe o suficiente, fazer um jogo será feito como uma série no meu canal do YouTube também.
É importante observar que este mecanismo não é e não será por um bom tempo, pronto para produção. É uma ferramenta de aprendizado e, como tal, ainda não está otimizada para uso em produtos de qualidade de produção. Isso acabará por mudar, mas por enquanto não está pronto para produção.
À medida que o projeto avança, as contribuições da comunidade são bem -vindas por meio de solicitações de tração no GitHub.
Os recursos devem ser contribuídos por meio de um nome de ramificação no formato do feature/<feature name> em que <feature name> é substituído pelo nome de um recurso ou, idealmente, com o número de um problema de recurso relatado (Ex: feature/80 ou feature/terrain ).
As correções de bug devem ser contribuídas por meio de um nome de ramificação no formato do bugfix/<issue#> onde <issue#> é substituído pelo número de um problema de recurso relatado (ex: bugfix/80 ). Portanto, as correções de bugs devem ter um problema associado criado no GitHub.
O código deve corresponder ao estilo geral do código no repo. Um guia de estilo de código será publicado aqui em algum momento do futuro próximo.
Todas as contribuições estão sujeitas a revisão e podem ou não ser aceitas, ou têm solicitações de alteração feitas antes de serem aceitas.
Estou desenvolvendo Kohi no meu tempo livre. Não tenho patrocinadores no momento. Se você gosta do meu trabalho, sinta -se à vontade para me apoiar nesses lugares:
Eu também apreciaria muito a seguir/assinaturas no YouTube e Twitch. Por favor, espalhe a palavra!
Seu apoio é muito apreciado e será reinvestido de volta ao projeto.