DDRaceNetwork (Português) - ArchWiki

Jump to content

# DDRaceNetwork (Português)

From ArchWiki
Status de tradução: Este artigo é uma tradução de DDRaceNetwork. Data da última tradução: 2020-09-03. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

DDNet, como é popularmente conhecido, é um jogo de plataforma de rolagem lateral, apresentando armamento e uma jogabilidade cooperativa, e é um mod de Teeworlds. O nome do jogo vem de "Dummy Drag Race Network", já que foi baseado no DDRace.

Do site oficial ddnet.tw (tradução nossa):

  DDraceNetwork (DDNet) é uma versão ativamente mantida do DDRace, uma modificação do Teeworlds com uma jogabilidade cooperativa única. Ajude uns aos outros a jogar através de mapas personalizados com até 64 jogadores, compita contra os melhores em torneios internacionais, crie seus próprios mapas ou administre seu próprio servidor. Os servidores oficiais estão localizados na Alemanha, Rússia, EUA, Canadá China, Japão, Cingapura, Chile, Brasil, África do Sul e Austrália. Todas as classificações feitas em servidores oficiais estão disponíveis em todo o mundo e você pode acumular pontos!

Você controla um tee, um personagem 2D em forma de bola, usando seu teclado e mouse para atirar, enganchar e pular para interagir com outros jogadores e o ambiente no mapa com a linha de chegada como alvo.

O jogo funciona em um modelo cliente-servidor, onde o usuário joga usando um cliente que se conecta a um servidor local ou remoto. Como o DDNet tem servidores oficiais, você provavelmente só iniciará o Cliente e jogará online.

## Instalação

Instale ddnetAUR. Alternativamente, você pode instalar sua versão de desenvolvimento ddnet-gitAUR.

### Skins opcionais

Instale ddnet-skinsAUR[link quebrado: package not found].

Este pacote fornece todos os skins do DDNet Skin Database (banco de dados de skins do DDNet) para o seu cliente, então você pode escolher entre muitos skins para jogar com um tee extravagante. No entanto, isso não afetará nada na jogabilidade.

Estes skins são instalados em `/usr/share/ddnet/data/skins/`.

Observe que outros jogadores só verão o skin escolhida se também tiverem ele instalado e, do contrário, verão o skin padrão amarelada. Portanto, isso pode acontecer com as skins deste pacote ou qualquer outra skin que você modificar ou criar.

Dica É possível criar ou modificar skins e usar para o seu personagem. Se você fizer isso, considere publicá-lo, para que outros usuários possam usá-lo via DDNet Skin Database. Para publicar skins, acesse este tópico do fórum
Atenção Este pacote traz consigo um consumo adicional de memória RAM de 120 MB para o cliente DDNet, então os usuários que jogam em um computador com pouca RAM disponível podem querer evitá-lo.

### Mapas offline

Instale ddnet-maps-gitAUR.

Este pacote fornece todos os mapas jogáveis do repositório ddnet-maps com arquivos de configuração padrão para executar um servidor DDNet offline. Assim, uma vez instalado, facilita a execução de um servidor offline.

Nota O cliente baixa mapas automaticamente na conexão ou alteração de mapa de uma instância do servidor. Portanto, é opcional.

Ter esses mapas offline é benéfico para o cliente e para o servidor:

- Os clientes não precisarão baixar os mapas já instalados por este pacote. Apenas novas versões de mapas instalados (raramente acontece) ou novos mapas serão baixados para o diretório do usuário (Veja #Arquivo e diretório para configurações de usuário.
- Os servidores podem usar os mapas e arquivos de configuração fornecidos para serem executados sem que o administrador do servidor tenha que perder tempo criando configurações para eles; veja #Servidor para mais informações.

## Jogar

Para jogar DDNet, execute o comando

    $ DDNet

ou execute o arquivo `.desktop` fornecido no pacote (por exemplo, no GNOME, procure por "ddnet" no panorama de atividades)

É muito simples — todas as configurações do usuário (seleção de skin, vídeo, controles etc.) podem ser feitas a partir da GUI do cliente DDNet.

Nenhuma configuração de servidor é necessária; se você deseja configurar um servidor local, consulte #Servidor.

Além disso, algumas ferramentas extras — das quais você provavelmente não precisará — estão disponíveis em `/usr/lib/ddnet/tools/`. Veja #Ferramentas extras.

### Tipos de jogo

Tipos de jogos (também conhecidos como modos de jogo, "gametypes" ou "game types") são maneiras diferentes de jogar jogos do tipo Teeworlds (DDNet incluído!) E maneiras diferentes de explorar seus recursos (por exemplo, física, armas matam ou simplesmente empurram outros jogadores, etc.).

No painel principal do cliente DDNet, várias instâncias do servidor são listadas (não apenas DDNet), cada uma é iniciada com apenas um tipo de jogo. Para jogar um tipo de jogo, você deve entrar na instância do servidor que tem o tipo de jogo desejado (por exemplo, você deseja jogar "ctf", você deve procurar e entrar em uma instância do servidor "ctf")

Veja abaixo uma lista não exaustiva com o nome e uma explicação dos tipos de jogos que podem ser encontrados nos servidores oficiais da DDNet (embora existam muitos mais).

#### Tipos de jogo DDNet

Estes são os tipos de jogo oficiais do DDNet, mantidos pelo DDNet. Isso significa que os mapas desses tipos de jogos são armazenados e disponibilizados no repositório de mapas da DDNet. Isso também significa que a equipe de teste executa alguns testes antes de os mapas serem adicionados ao repositório e publicados.

Alguns deles podem exigir uso do DDNet Client devido aos recursos (por exemplo, "tee" dummy, formação de equipes, combinações de teclas específicas) que este cliente fornece, mas outros podem ser jogados com outros clientes, como Teeworlds.

O objetivo desses mapas, salvo quando mencionado de outra forma abaixo, é superar obstáculos e outras dificuldades do mapa, enquanto se ajudam mutuamente, a fim de alcançar a linha de chegada do mapa.

Este conjunto de tipos de jogos consiste em:

- novice – Os mapas colaborativos mais fáceis podem ser encontrados aqui. Os novatos devem começar aqui.
- moderate – Mapas colaborativos de nível moderado para usuários mais experientes.
- brutal – Mapas colaborativos difíceis para usuários muito experientes.
- insane – Mapas colaborativos incrivelmente difíceis para usuários incrivelmente experientes.
- solo – Jogue sozinho o mapa inteiro, sem nenhum dummy ou qualquer interação física com os usuários (mas você pode conversar com outros jogadores)
- ddmax – Mapas de DDracemaX, um dos primeiros mod de corrida e muito popular. Este projeto foi descontinuado, então DDNet adotou[1] seus mapas e os disponibilizou nos servidores oficiais. Veja [2] para mais informações sobre este tipo de jogo.
- dummy – Mova seu dummy até a linha de chegada, de forma colaborativa ou solo, dependendo do mapa.
- oldschool – Alguns mapas antigos para deixar os jogadores de longa data nostálgicos.
- race – Alcance a linha de chegada o mais rápido que puder em uma corrida solo.

Nota Ao olhar a lista de servidores do painel do cliente, você pode notar que todas as instâncias do servidor DDNet têm a coluna Tipo como DDRace e o nome da instância do servidor incluirá o tipo de jogo listado acima, por exemplo, "DDNet GER - DDmaX [DDRaceNetwork]"

#### Tipos de jogo vanilla

Os tipo de jogos chamados de vanilla são os primeiros, e foram criados em Teeworlds, e que o DDNet tem suporte. Este conjunto de tipos de jogos inclui:

- dm (deathmatch) – O objetivo é matar o máximo possível de jogadores até atingir o limite de portes ou de tempo. A partida termina assim que uma das condições é atingida, e o vencedor é o jogador que acumulou o maior número de mortes.
- tdm (team deathmatch) – Igual ao Deathmatch acima, exceto que os jogadores são organizados em duas equipes, com cada equipe tendo sua própria contagem de mortes.
- ctf (capture the flag) – Baseado no famoso "pique bandeira", duas equipes têm, cada uma, uma bandeira (vermelha para equipe vermelha e azul para equipe azul) e o objetivo é capturar a bandeira da outra equipe, localizada na "base" da equipe, e trazê-la com segurança de volta para sua própria base até atingir uma determinada pontuação ou o tempo acaba. Mate o inimigo para evitar que sua bandeira seja capturada ou para levar a bandeira de volta à base de seu time.

#### Tipo de jogo blocker

Nota Você o encontrará com o tipo ddrace, mas o título do servidor e o nome do mapa podem ser facilmente identificados como Blocker

Blocker tem como único objetivo bloquear outros jogadores, o que significa brincar jogando em áreas congeladas. Não há pontuação ou limite de tempo neste tipo de jogo, ou pelo menos não importa.

Observe que embora seja esperado ser bloquear outros neste tipo de jogo blocker, o mesmo não se aplica a #Tipos de jogo DDNet — neste último caso é rude e você provavelmente será banido por votação de outros.

#### Tipos de jogo tipo FNG

Tipos notáveis: fng (descontinuado, incompátível), openfng (tópico), fng2 (fonte).

Nesse tipo de jogo, os jogadores são divididos em 2 times e o objetivo é ganhar fazendo mais pontos. Você marcará pontos ao acertar o jogador com um martelo ou arma laser (as únicas armas disponíveis), o que causará o congelamento, e lançá-los me estacas.

## Configuração

As configurações são armazenadas em arquivos de texto simples no diretório inicial do usuário e podem ser aplicadas nas opções da GUI ou no console incorporado. Veja mais informações abaixo sobre este tópico.

### Arquivo e diretório para configurações de usuário

O diretório `$HOME/.teeworlds/` armazena a configuração do usuário, demos (vídeos de jogo gravados), capturas de tela, mapas baixados e outros conteúdos do usuário.

O arquivo de configuração `settings_ddnet.cfg` é onde a configuração do usuário é armazenada, em um formato de texto simples em uma sintaxe apropriada. Este arquivo é carregado pelo cliente DDNet na inicialização e atualizado ao sair. Portanto, você não precisa definir suas configurações manualmente no arquivo de configuração. Para todas as configurações de cliente com suporte, consulte Client Settings.

O subdiretório `downloadmaps/` armazenará mapas baixados em tempo de execução pelo cliente DDNet ao se conectar a instâncias do servidor, se os mapas ainda não estiverem disponíveis.

Dica Com ddnet-maps-gitAUR instalado, você evita ter que baixar mapas ao se conectar a instâncias de servidor.

## Servidor

Embora um servidor DDNet local não seja necessário para jogar DDNet (Veja #Jogar), pode-se querer executá-lo para jogar sem conexão com a Internet, evitando alta latência ("ping" na interface do jogo) dos servidores na Internet, simplesmente deseja testar recursos, etc.

Para mais informações, veja Server Features, Server Settings, Server Commands e muito mais em DDNet Forums (todos em inglês).

### Servidor por meio de serviço de systemd

Os pacotes de DDNet fornecem o arquivo unit `ddnet-server.service` de systemd para facilmente iniciar, parar etc. a instância de servidor.

Este arquivo unit executa a instância de servidor como o usuário de sistema `ddnet` a partir de sua própria pasta pessoal `/var/lib/ddnet/` como diretório de trabalho, tendo mensagens log disponíveis no arquivo `/var/lib/ddnet/autoexec_server.log` e via a linha de comando `journactl -u ddnet-server` do journal do systemd.

### Suporte a MySQL

DDNet fornece suporte MySQL para armazenar registros obtidos no servidor, porém não está habilitado por padrão.

Para habilitar o suporte MySQL ao usar ddnetAUR ou ddnet-gitAUR, simplesmente edite o PKGBUILD definindo a variável `_enable_mysql` para `1`, e as dependências adequadas serão adicionadas e os sinalizadores adequados serão habilitados.

Caso você esteja compilando DDNet manualmente (isto é, sem usar os pacotes acima), certifique-se de:

- instalar as dependência de tempo de compilação boost e as dependências de tempo de execução mariadb-libs e mysql-connector-c++AUR;
- anexar `-DMYSQL=ON` à linha de comando do cmake.

Dica Certifique-se de consultar MariaDB para algumas instruções pós-instalação para evitar problemas.

### Executando um servidor com ddnet-maps-git

ddnet-maps-gitAUR fornece mapas e configurações de servidor que permitem a execução de um servidor sem outras configurações. Para ter o servidor ativo:

1. Instale ddnet-maps-gitAUR
2. Inicie/habilite `ddnet-server.service`

Sua instância de servidor local agora deve estar disponível e visível na guia "LAN" do Cliente DDNet.

## Ferramentas extras

Esta seção lista e descreve algumas ferramentas que, embora a maioria não precise delas, podem ser úteis para, por exemplo, mapeadores. Algumas dessas ferramentas são desenvolvidas pela equipe de desenvolvimento do DDNet, mas outras ferramentas foram herdadas do Teeworlds ao criar um fork do seu código-fonte no início.

As ferramentas abaixo são fornecidas em `/usr/lib/ddnet/` pelos pacotes DDNet.

### config_retrieve

    $ /usr/lib/ddnet/config_retrieve arquivomapa.map

Recupera a configuração incorporada no arquivo de mapa DDNet e armazena em um .cfg com o mesmo nome de arquivo (por exemplo, "Kobra 4.map" retorna "Kobra 4.cfg")

Disponível desde DDNet versão 9.0.

### config_store

    $ /usr/lib/ddnet/config_store arquivomapa.map

Armazena um arquivo de configuração de mapa no arquivo de mapa. Os arquivos de configuração e de mapa devem ter o mesmo nome de arquivo no mesmo diretório, caso contrário, a operação falhará.

Disponível desde DDNet versão 9.0.

Nota Se não houver diferença entre a configuração a ser armazenada e a configuração embutida no mapa, a operação será cancelada com a mensagem `configs coincide, not updating map`.

### crapnet

    $ /usr/lib/ddnet/crapnet

Testa a conexão definindo uma conexão cliente-servidor localmente e executando ping entre eles. Relata pacotes perdidos com mensagem `dropped packet` e sucessos com `cfg = número`, sendo que número varia de 0 a 2.

### dilate

    $ /usr/lib/ddnet/dilate arquivoimagem1 [arquivoimagem2 ... ]

É uma ferramenta gráfica, útil principalmente para mapeadores. Ela cuida das áreas transparentes para evitar contornos em preto/branco ao redor de suas imagens no jogo, evitando assim problemas de mesclagem e mipmap. Veja Edge padding ("Preenchimento de borda") para mais informações.

Nota Isso funciona apenas em arquivos de imagem RGBA. Portanto, não funcionará, por exemplo, em arquivos JPEG.

### dummy_map

    $ /usr/lib/ddnet/dummy_map

Cria um pequeno mapa vazio fictício para ser usado para iniciar um servidor. Veja [3] para mais informações.

### fake_server

    $ /usr/lib/ddnet/fake_server

Cria um servidor fictício para teste.

### map_convert_07

    $ /usr/lib/ddnet/map_convert_07 arquivomapaorigem.map arquivomapadestino.map

Torna `arquivomapadestino.map` compatível com Teeworlds versão 7.x que de outra forma seria compatível apenas com Teeworlds versão 6.x. Se for bem-sucedido, ele cria um mapa de destino compatível com 07 válido; caso contrário, ele retorna o seguinte:

- uma mensagem de uso, se argumentos incorretos forem fornecidos
- `failed to open source map` se ocorrer um erro ao abrir o mapa de origem
- `failed to open destination map` se ocorrer um erro ao abrir o mapa de destino
- `error loading storage` se falhar em abrir o armazenamento por algum motivo
- `failed to open image file` se ocorrer um erro ao abrir uma imagem PNG
- `invalid image format` se o PNG estiver incorretamente formatado

Disponível desde o DDNet versão 12.9.

### map_diff

    $ /usr/lib/ddnet/map_diff arquivomapa1.map arquivomapa2.map

Compara dois arquivos de mapa, relatando um dos seguintes:

- sem saída comparativa (mapas são iguais)
- `different layer numbers`, se um mapa tem mais camadas do que o outro
- `different tile layers`, se o número de camadas for o mesmo, mas pelo menos uma camada for diferente
- por fim, as posições de índice e sinalizadores que divergem.

Se houver nenhuma diferença entre os mapas, retorna 0; do contrário, retorna 1.

### map_extract

    $ /usr/lib/ddnet/map_extract arquivomapa.map [diretório]

Extrai conteúdo de arquivomapa.map para o diretório. Se o argumento opcional diretório não for fornecido, extrai para o diretório atual.

### map_replace_image

    $ /usr/lib/ddnet/map_replace_image arquivomapa1.map arquivomapa2.map nomeimagem arquivoimagem

Substitui a imagem nomeimagem atualmente dentro do mapa com nome de arquivo arquivoimagem1.map com a imagem de caminho de arquivo arquivoimagem e salva isso no mapa com nome de arquivo arquivomapa2.map.

Nota

- Ambos nomes de arquivos de mapa devem ser relativos à pasta de usuário padrão do DDNet
- Nome do caminho de arquivo de imagem pode ser absoluto, ou relativo à posição atual

### map_resave

    $ /usr/lib/ddnet/map_resave arquivomapa.map arquivoimagem

Atualizar o arquivo de mapa arquivomapa.map com o arquivo fornecido arquivoimagem.

O erro de status 255 é retornado se 1) um número de argumentos diferente de 2 foi fornecido, 2) se o arquivomapa.map não é válido ou 3) se arquivoimagem não é um arquivo de imagem válido (por exemplo, é um arquivo texto); do contrário, retorna 0.

### packetgen

    $ /usr/lib/ddnet/packetgen

Gera pacotes de rede para localhost na porta padrão (8303) para testar a comunicação com uma instância de servidor local.

### tileset_borderadd

    $ /usr/lib/ddnet/tileset_borderadd tileset1 [tileset2 ...]

É uma ferramenta gráfica, útil principalmente para mapeadores. Ela corrige problemas de mesclagem, semelhantes a #dilate, mas se aplica apenas a arquivos de tileset ("conjuntos de blocos"). Ele espera, como entrada, tilesets com um tamanho de 960x960 pixels com 60x60 blocos. Depois de aplicar a operação borderadd, a imagem será de 1024x1024 com blocos 64x64 com uma borda de 2px.

Retorna 255 com uma mensagem de uso se menos de 1 argumento for fornecido, retorna 1 se a imagem não for uma imagem RGBA (ou seja, arquivo de tileset inválido) e retorna 0 para operação bem-sucedida.

### tileset_borderfix

    $ /usr/lib/ddnet/tileset_borderfix tileset1 [tileset2 ...]

Assim como #tileset_borderadd, esta é uma ferramenta gráfica, útil principalmente para mapeadores, que corrige problemas de mesclagem de tilesets. Porém, esta ferramenta espera, como entrada, tilesets com um tamanho de 1024x1024 pixels e não produz imagens de saída tão boas quanto tileset_borderadd. Por exemplo, ela não adiciona uma borda de 2px.

Retorna 255 com uma mensagem de uso se menos de 1 argumento for fornecido, retorna 1 se a imagem não for uma imagem RGBA (ou seja, arquivo de tileset inválido) e retorna 0 para operação bem-sucedida.

### tileset_borderrem

    $ /usr/lib/ddnet/tileset_borderrem tileset1 [tileset2 ...]

Esta é uma ferramenta gráfica, útil principalmente para mapeadores. Ela faz a operação inversa de #tileset_borderadd e #tileset_borderset, isto é, ela remove a borda de tilesets.

Retorna 255 com uma mensagem de uso se menos de 1 argumento for fornecido, retorna 1 se a imagem não for uma imagem RGBA (ou seja, arquivo de tileset inválido) e retorna 0 para operação bem-sucedida.

### tileset_borderset

    $ /usr/lib/ddnet/tileset_borderset tileset1 [tileset2 ...]

Esta é uma ferramenta gráfica, útil principalmente para mapeadores. Ela faz praticamente o mesmo que #tileset_borderadd, mas espera imagens 1024x1024 em vez de 960x960, e a borda é feita na hora. Então, cada bloco 60x60 deve ser colocada dentro de um bloco 64x64.

Retorna 255 com uma mensagem de uso se menos de 1 argumento for fornecido, retorna 1 se a imagem não for uma imagem RGBA (ou seja, arquivo de tileset inválido) e retorna 0 para operação bem-sucedida.

### unicode_confusables

    $ /usr/lib/ddnet/unicode_confusables string1 string2

Compara string1 com string2 e relata se elas são "confundíveis", ou seja, se os caracteres são "iguais" e podem causar confusão. Para que isso funcione, os personagens com acentos ou outras coisas ao seu redor são considerados "confundíveis" com o personagem base. Portanto, aa e aá são confundíveis (á foi considerado como a), enquanto aa e ab não são.

Se forem confundíveis, retorna `not_confusable=0`; caso contrário, retorna `not_confusable=1`.

Disponível desde DDNet versão 10.3.5. Desde DDNet versão 12.9, tem suporte a Unicode 12.0 e o nome da ferramenta foi renomeado de confusables para unicode_confusables.

### uuid

    $ /usr/lib/ddnet/uuid nome

Exibe o uuid para o nome fornecido.

O sistema uuid foi implementado para ser facilmente estendido por autores independentes sem colisões, algo que o sistema antigo — com números inteiros crescentes — não permitia. Isso funciona para mensagens do motor e do jogo, itens de instantâneos e eventos.

Sai com status de erro 255 se nome não for fornecido.

Disponível desde DDNet 10.6.1

## Solução de problemas

### Compilação falhou, MYSQL_CPPCONN_INCLUDEDIR e MYSQL_CPPCONN_LIBRARY não encontrados

Problema:

A compilação falha e a seguinte mensagem é exibida:

    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
    Please set them or make sure they are set and tested correctly in the CMake files:
    /build/ddnet/src/DDNet-11.1.9/MYSQL_CPPCONN_INCLUDEDIR
       used as include directory in directory /build/ddnet/src/DDNet-11.1.9
       [...]
       used as include directory in directory /build/ddnet/src/DDNet-11.1.9
    MYSQL_CPPCONN_LIBRARY
        linked by target "DDNet-Server" in directory /build/ddnet/src/DDNet-11.1.9

    -- Configuring incomplete, errors occurred!
    See also "/build/ddnet/src/build/CMakeFiles/CMakeOutput.log".
    See also "/build/ddnet/src/build/CMakeFiles/CMakeError.log".

Solução:

Significa que sua linha de comando do cmake tem o sinalizador `-DMYSQL=ON` definido, você tem o pacote mariadb-libs instalado, mas mysql-connector-c++AUR está faltando.

Instale mysql-connector-c++AUR para compilar com suporte MySQL ou remova `-DMYSQL=ON` (ou desative com `-DMYSQL=OFF`) para compilar sem ele.

### Compilação falhou, arquivo boost/shared_ptr.hpp inexistente

Problema:

A compilação falha e a seguinte mensagem é exibida:

    [ 38%] Building CXX object CMakeFiles/DDNet-Server.dir/src/engine/server/server.cpp.o
    In file included from /build/ddnet/src/DDNet-11.1.9/src/engine/server/sql_server.h:4,
                     from /build/ddnet/src/DDNet-11.1.9/src/engine/server/sql_connector.h:4,
                     from /build/ddnet/src/DDNet-11.1.9/src/engine/server/server.h:28,
                     from /build/ddnet/src/DDNet-11.1.9/src/engine/server/server.cpp:40:
    /usr/include/mysql_connection.h:31:10: fatal error: boost/shared_ptr.hpp: No such file or directory
     #include <boost/shared_ptr.hpp>
              ^14:06, 19 June 2018 (UTC)14:06, 19 June 2018 (UTC)14:06, 19 June 2018 (UTC)14:06, 19 June 2018 (UTC)~
    compilation terminated.
    make[2]: *** [CMakeFiles/DDNet-Server.dir/build.make:116: CMakeFiles/DDNet-Server.dir/src/engine/server/server.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:281: CMakeFiles/DDNet-Server.dir/all] Error 2
    make: *** [Makefile:152: all] Error 2

Solução:

Significa que sua linha de comando do cmake tem o sinalizador `-DMYSQL=ON` definido, você tem os pacotes mariadb-libs e mysql-connector-c++AUR instalados, mas boost está faltando.

Instale boost para compilar com suporte MySQL ou remova `-DMYSQL=ON` (ou desative com `-DMYSQL=OFF`) para compilar sem ele.

## Veja também

- Site oficial do DDNet
- Fórum do DDNet
- Wiki do DDNet
- Repositório de código-fonte do DDNet
- A história do DDNet (inglês)
- Tutoriais e outros links úteis (inglês)

Category:

- Gaming (Português)

Hidden category:

- Pages with broken package links

DDRaceNetwork (Português)
Add topic