Minhas decisões de arquitetura em minha engine

Pitch: Como desenvolvi uma game engine em rust e tomei algumas decisões e arquitetura

Há algum tempo eu tinha uma engine 2D em Rust chamada milim-2d: rodava sobre SDL2, tinha um EngineContext concreto passado pra todo lugar, e um punhado de módulos soltos na raiz do crate. Funcionava. Mas toda vez que eu tentava adicionar uma feature nova, multiplayer, por exemplo, eu sentia o design resistindo.

Decidi não fazer um ajuste incremental. Fiz uma reescrita de arquitetura de propósito, e o resultado se chama alone-engine. Esse post é sobre quatro decisões específicas que tomei nessa reescrita, o raciocínio por trás de cada uma, e, o mais importante, o que elas custaram.

Nenhuma decisão de arquitetura é de graça, e eu acho que posts que só mostram o lado bonito da escolha enganam quem tá decidendo a própria arquitetura.

Decisão 1: Trocar SDL2 por winit + pixels

A milim-2d usava SDL2, bindings C, feature bundled, um renderer/adapter.rs fazendo a ponte. Funcionava bem, mas eu queria dois efeitos colaterais específicos: (a) remover a dependência de compilar C em toda plataforma, e (b) ter controle total sobre o buffer de pixels, porque eu já sabia que ia querer fazer coisas

DecisoesDesenvolviEngineGameRust