Conheça a Linguagem Beef - Específica para Desenvolvedores de Jogos

🐮 Uma 'carne bovina' parecida com CSharp e feita com C++


Conheça a Linguagem Beef - Específica para Desenvolvedores de Jogos


Beef é uma linguagem open‑source, compilada e voltada a alto desempenho, especialmente desenhada para o desenvolvimento de aplicações em tempo real como jogos, unindo desempenho com produtividade.

• Sintaxe inspirada em C#, com controle manual de memória inspirado em C e C++, e ergonomia moderna inspirada por Swift e Go.

  • Projeto bem pensado, com IDE própria (Windows);
  • Compilador CLI (Linux/macOS);
  • Debugger;
  • Assistentes de código;
  • e Hot‑compiling.

Beef é ideal para quem precisa de desenvolvimento rápido e controle fino de recursos, principalmente:

  • Desenvolvedores de Jogos e Motores de Jogos (console, desktop, WASM).
  • Projetos que exigem depuração eficiente, código hot‑reload, ergonomia orientada a produtividade.

Existe binário pré-compilado para Windows inclusive com um IDE com autocomplete pronto para usar, basta fazer o download e executar o .exe.

Mas, no macOS e distros GNU/Linux precisa compilar do zero.

Abaixo veremos o procedimento para compilar e instalar em distros GNU/Linux.


Dependências

Antes de mais nada, você vai precisar das seguintes ferramentas instaladas no seu sistema:

Exemplo de instalação das dependências usando o APT:

sudo apt install clang-18 llvm-18 build-essential cmake git \
  libffi-dev libedit-dev zlib1g-dev zstd libcurlpp-dev libxml2-dev

Após isso é só clonar e construir:

git clone https://github.com/beefytech/Beef
cd Beef
./bin/build.sh

Antes dos testes aparecerá:

[******************************]
TIMING: Beef compiling: 37.2s
Frontend time: 23.48s
Comptime execution time: 3.67s
Linking BeefBuild_bootd...
SUCCESS
Building BeefBuild_d
[******************************]
Beef compilation time: 41.44s
Frontend time: 21.56s
Comptime execution time: 3.49s
Executing Command: ReadFile("$(WorkspaceDir)/../IDE/dist/IDEHelper_libs_d.txt", "IDEHelperLibs")
Testing IDEHelper/Tests in BeefBuild_d

Após finalizada a compilação, teste um Hello, World! via linha de comando:

  • Entre na pasta que foi criado o binário:
cd IDE/dist
./BeefBuild -new

Aparecerá na saída: Created new workspace in '/home/$USER/Beef/IDE/dist'

Isso criará os arquivos:

  • BeefProj.toml, com o conteúdo:
FileVersion = 1

[Project]
Name = "dist"
StartupObject = "dist.Program"
  • BeefSpace.toml, com o conteúdo:
FileVersion = 1
Projects = {dist = {Path = "."}}

[Workspace]
StartupProject = "dist"
  • src/ (pasta vazia)

Para criar um arquivo em src/, rode:

./BeefBuild -generate

Isso vai gerar a pasta build/ e também o arquivo Program.bf dentro da pasta src/Program.bf. Mas, não tem um Hello, World! dentro do arquivo.

Edite o arquivo: vim src/Program.bf e insira um: Console.WriteLine("Hello, world!"); dentro da função Main(), ficando assim:

using System;

namespace dist;

class Program
{
	public static int Main(String[] args)
	{
    Console.WriteLine("Hello, world!");
		return 0;
	}
}

Agora rode o arquivo com o argumento -run:

./BeefBuild -run

Aparecerá: Hello, world!.


Instalação

Limpe os arquivos criados:

rm -rf src/ BeefSpace.toml build/ BeefProj.toml ../../.git ../../.gitignore

Na verdade vc só precisará desses diretórios:

  • 📁 BeefLibs/
  • 📁 IDE/
  • 📁 IDEHelper/
  • 📁 jbuild/
  • e 📁 jbuild_d/

Mas, todos eles somam: 1,4GB com os demais vão para 1,6GB, então, se quiser só remova os arquivos gerados pelo teste realizado(Hello, World!) e os arquivos do Git.

Mova para /opt/:

cd ..
sudo mv Beef/ /opt/

Crie os links simbólicos para o binário e para as libs:

sudo ln -sf /opt/Beef/IDE/dist/BeefBuild /usr/local/bin/beef
sudo ln -sf /opt/Beef/jbuild/Release/bin/libhunspell.so /usr/local/lib/libhunspell.so
sudo ln -sf /opt/Beef/jbuild/Release/bin/libBeefRT.a /usr/local/lib/libBeefRT.a
sudo ln -sf /opt/Beef/jbuild/Release/bin/libBeefRT.a /opt/Beef/IDE/dist/libBeefRT.a
sudo ldconfig

Teste:

beef -version

BeefBuild 0.43.6

Teste um novo projeto:

mkdir MyGameBeef
cd MyGameBeef/
beef -new
beef -generate

Modifique o arquivo vim src/Program.bf:

Se quiser Syntax Highlight similar ao do CSharp no Vim: :set filetype=cs

using System;

namespace MyGameBeef {
  class Program {
    static void Main() {
      Console.WriteLine("My first game with Beef!");
    }
  }
}

Rode:

beef -run

Eu testei o desempenho do tempo gasto de mil ciclos para o loop for com esse código:

for(int i = 0; i <= 1000000; ++i){
  Console.Write(scope $"{i}Ok\r");
}

O resultado foi:

1000000Ok
real	0m6,767s
user	0m2,717s
sys	0m3,292s


Para mais informações acesse o endereço oficial em: https://www.beeflang.org/ e o repositório: https://github.com/beefytech/Beef.


gamedev programacao csharp


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!