What about...UDMF Editor?

Sub-fórum especial para usuários que querem discutir/aprender programação, como as linguagens C/C++/C#, Java, HTML, e por aí vai...
Avatar do usuário
DU0
Mensagens: 6690
Registrado em: Sáb Abr 01, 2006 6:59 am
Answers: 0
19
Localização: Deimos Lab.
Contato:

Re: What about...UDMF Editor?

Mensagem por DU0 »

Logan MTM escreveu:Eu acho o render GL em modo 2D do SLADE simplesmente o máximo! :D
Imagem
Jogando atualmente:
Xbox 360: Ninja Gaiden Black
Xbox One: Need for Speed: Hot Pursuit, Yakuza 3
PlayStation 2: Fatal Frame 3: The Tormented
PlayStation 3: RE: The Darkside Chronicles, RE: The Umbrella Chronicles
Nintendo Switch: Phantasy Star, SIFU
Rico
Mensagens: 2354
Registrado em: Dom Set 10, 2006 11:49 am
Answers: 0
18
Localização: Atrás do DU0
Contato:

Re: What about...UDMF Editor?

Mensagem por Rico »

É, slade também.
[xfire]p0br3[/xfire]
Futuro PC:

CPU: AMD Athlon x2 64Bits 7750 2.7GHz Black Edition
MoBo: Asus M2 ou M3.
VGA: XFX Geforce 9800 GTX 512MB ou 1GB/256Bits
HD: Seagate 1TB
PSU: ATX 600w REAIS
RAM: 4GB Ram DDR2 Kingstone @800MHz [2x2Gb]
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Re: What about...UDMF Editor?

Mensagem por Fabio914 »

Aew galerinha!

Minha internet deu pau e só hoje pôde arrumar (queimou o chip GSM do modem 3G :cry: e tive que mandar fazer outro...), mas não é por isso que eu estou escrevendo este post...

Hoje eu encontrei um tutorial muito bom sobre construção de compiladores (e até comecei a fazer um*, seguindo o tutorial), ele é bem simples e não se aprofunda em teoria dos compiladores, complexidade de algoritmos e otimização (ele cita um pouco de otimização). E a partir deste tutorial eu consegui bolar um modo de ler e interpretar o UDMF, ou seja, consegui bolar um parser da linguagem do UDMF (com checagem de erros até!), baseando-se nos métodos abordados nos primeiros capitulos deste tutorial.

*(obs.: O tutorial tem códigos bem simples em Pascal, mas eu to fazendo em C)

Então to postando aqui o link do tutorial, caso queiram ler alguma coisa... Mas o mais importante é que nos próximos dias eu estarei liberando um programa capaz de interpretar o UDMF, e com base nisso poderei fazer com que as informações lidas sejam armazenadas em árvores e com isso poderá se ter acesso eficiente a estas informações.
E com tudo isso já poderemos ter início ao desenvolvimento do nosso editor, pois nos bastará criar a parte gráfica da interface com o usuário, pois toda a parte de leitura e escrita do UDMF e de acesso às informações eu mesmo posso implementar e disponibilizar as funções para que vocês usem nas outras partes da implementação.

Tendo essa base pronta poderemos nos focar nas features que queremos colocar neste editor.

Segue o link do tutorial: http://compilers.iecc.com/crenshaw/

Falows! :wink:
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Re: What about...UDMF Editor?

Mensagem por Fabio914 »

Post duplo, but...

Já comecei a trabalhar nisso e já tenho um executavel de teste... Caso alguem queira ver eu to disponibilizando ele para download.

O que já foi feito:
- Adicionado estruturas e funcionalidades de arvore binaria de busca.
- Adicionado parser do UDMF, ainda sem suporte para comentarios e sem checagem de variaveis (apenas checa se os tipos de objetos estão certos, ex: linedef é certo mas lined é errado).

Rodando o programa vocês poderão ver que o programa pode ler as variáveis que estão declaradas nos objetos do arquivo mapa.txt que está no formato UDMF (bem reduzido). Vocês podem editar esse arquivo e fazer erros nele para ver que o programa pode identificar alguns desses erros.

Download:
udmf_editor_v000.rar
(10.39 KiB) Baixado 139 vezes
Em breve eu termino a parte de leitura e passo os protótipos das funções de carregamento dos itens para que possa ser usado nas interfaces de usuário...

Falows!
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Re: What about...UDMF Editor?

Mensagem por Fabio914 »

Post triplo, but...

Depois de uma tarde trabalhando finalmente a parte de interpretação, detecção de erros e armazenamento (parser mais árvores) já está completa!

Changelog:

Código: Selecionar todos

 + Suporte a comentários (porem nao se pode ter 2 ou mais comentarios seguidos sem alguma linha de codigo entre eles)
 + Suporte a variáveis String.
 + Checagem de variáveis (ex.: se você entrar com secret=1; vai dar erro pois a variavel secret deve receber um bool).
 + Checagem do namespace.
 + Itens tem suas variaveis inicializadas com valores padroes, seguindo expecificacao do UDMF v.1.1.
O que falta (da parte de leitura e escrita):

Código: Selecionar todos

 - Funcoes faceis para a obtencao dos dados das arvores [onde estao armazenados].
 - Adicionar funcoes de balanceamento (rotacao) de arvore binaria para otimizacao.
 - Adicionar funcoes de remocao em arvore.
 - Adicionar contadores de objetos (ex.: se existem 3 things carregados, o contador de things valera 3).
 - Fazer funcoes para escrita de UDMF.
Obs.: O programa foi feito todo em C até aqui, mas, acredito eu, que a portabilidade para C++ seja facil. No geral as maiores mudanças serão na parte de alocação dinâmica...

Teoricamente agora se tem um programa capaz de interpretar o UDMF (caso eu não tenha errado nada na codificação ou tenha algum bug)...

Para se ter uma idéia ele é capaz de ler este UDMF exemplo (pelo mais 'bagunçado' que esteja):

Código: Selecionar todos

/*

Este eh um teste de UDMF

*/

   namespace = "GZDoom Rulez";

linedef { // teste2
id= 1;
   secret= /* teste 3*/ true;

   v1=5 /* teste 4 */;
   v2=3; // teste 5

  comment = " um teste maior";

} sidedef /* teste 6 */ {
   offsetx=2;
} // teste 7
Download:
UDMF_editor_v001.rar
(20.36 KiB) Baixado 114 vezes
(acompanha código fonte, 4 arquivos *.c e 4 arquivos *.h)

Por favor, quem puder teste ele (editando o arquivo do mapa) e me digam os resultados, um programa deste tipo pode ter muitos bugs que passam desapercebido...

Obrigado.

Falows! :wink:

EDIT:
Esqueci de falar (porque também esqueci de implementar), mas variaveis inteiras e float ainda não carregam numeros negativos...

Alias, caso você queira abrir um mapa criado pelo DB2 neste programa, além de tirar os '-' dos numeros negativos você deve também colocar uma outra variavel, chamada 'chave' em cada item, pegando o valor do comentario (ao lado do nome do item) e colocando como valor desta variavel, da seguinte forma:
DB2:

Código: Selecionar todos

namespace = "zdoom";
vertex // 0
{
x = -96.000;
y = -192.000;
}
UDMF editor:

Código: Selecionar todos

namespace = "zdoom";
vertex // 0
{
chave=0;
x = 96.000;
y = 192.000;
}
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Avatar do usuário
Drak[X]
Mensagens: 816
Registrado em: Sáb Fev 04, 2006 3:16 pm
Answers: 0
19
Localização: São Paulo - Brasil
Contato:

Re: What about...UDMF Editor?

Mensagem por Drak[X] »

Fabio914 escreveu:
...

Changelog:

Código: Selecionar todos

 + Suporte a comentários (porem nao se pode ter 2 ou mais comentarios seguidos sem alguma linha de codigo entre eles)
 + Suporte a variáveis String.
 + Checagem de variáveis (ex.: se você entrar com secret=1; vai dar erro pois a variavel secret deve receber um bool).
 + Checagem do namespace.
 + Itens tem suas variaveis inicializadas com valores padroes, seguindo expecificacao do UDMF v.1.1.
Gostei de tudo... com excessão de uma coisa...

Porque UDMF 1.1 ???

Aqui ele está na versão 1.8 ??? UDMF 1.8
DOOM é eterno!!!
As informações que temos não é a que desejamos. A informação que desejamos não é a que precisamos. A informação que precisamos não está disponível (John Peers)
Rico
Mensagens: 2354
Registrado em: Dom Set 10, 2006 11:49 am
Answers: 0
18
Localização: Atrás do DU0
Contato:

Re: What about...UDMF Editor?

Mensagem por Rico »

wow o.O
[xfire]p0br3[/xfire]
Futuro PC:

CPU: AMD Athlon x2 64Bits 7750 2.7GHz Black Edition
MoBo: Asus M2 ou M3.
VGA: XFX Geforce 9800 GTX 512MB ou 1GB/256Bits
HD: Seagate 1TB
PSU: ATX 600w REAIS
RAM: 4GB Ram DDR2 Kingstone @800MHz [2x2Gb]
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Re: What about...UDMF Editor?

Mensagem por Fabio914 »

Drak[X] escreveu:
Fabio914 escreveu:
...

Changelog:

Código: Selecionar todos

 + Suporte a comentários (porem nao se pode ter 2 ou mais comentarios seguidos sem alguma linha de codigo entre eles)
 + Suporte a variáveis String.
 + Checagem de variáveis (ex.: se você entrar com secret=1; vai dar erro pois a variavel secret deve receber um bool).
 + Checagem do namespace.
 + Itens tem suas variaveis inicializadas com valores padroes, seguindo expecificacao do UDMF v.1.1.
Gostei de tudo... com excessão de uma coisa...

Porque UDMF 1.1 ???

Aqui ele está na versão 1.8 ??? UDMF 1.8
1.1 pois foi essa especificação que você postou no Portal... o.O

Putz, pelo que eu pude ver na especificação eu terei que mudar umas coisas...

EDIT:

Descobri que o GZDoom ignora as variáveis que não são padrões, assim podemos expandir o UDMF com variáveis especificas do nosso editor. Por exemplo, a variavel 'chave' que eu mostrei acima ,que serve como identificação do numero correto de cada item (i.e.: é a chave de busca na árvore), é simplesmente ignorada pelo GZDoom então não é preciso "comenta-la". O mesmo ocorre com o DB2, logo pode-se criar um mapa no nosso editor e depois abri-lo no DB2 sem problemas com as variaveis especificas do nosso editor... :wink:
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
18
Localização: Sampa/Sanca
Contato:

Re: What about...UDMF Editor?

Mensagem por Fabio914 »

Post duplo, but...

Resolvi fazer algo (in)útil com base no que eu já tenho implementado (com base nessa última versão, porém com algumas correções a mais na inserção e busca das árvores), então resolvi criar um pequeno MapViewer de UDMF com o propósito de demonstração...

Screenshot:
vejam_udmf.png
Notem que, como o sistema de coordenadas do Allegro tem o canto superior esquerdo da tela como origem, e cresce para baixo e para a esquerda, o mapa aparece invertido em relação ao grid do DB2.

Download:
UDMF_editor_mapview_demostracao.rar
(318.52 KiB) Baixado 133 vezes
O download contém o arquivo wad com o mapa (para ser carregado no Doom Builder 2), um arquivo de texto com o mesmo mapa do wad (pode até conferir!), o executavel do UDMF editor com as funções já implementadas e um executavel do MapViwer em Allegro (além da lib do Allegro).

Para testar você deve executar o UDMF editor e depois, quando o arquivo saida.txt for gerado, executar o MapViwer.

Obs.: Você pode tentar criar outro mapa para visualisar, porém você deve adicionar, em todos os itens, a variavel 'chave' com mesmo valor do mostrado no comentario ao lado do nome do item. Em mapas um pouco maiores que esse você já vai gastar uns 30 min fazendo isso, então acho que ninguém fará... Alias, como eu não implementei ainda números negativos (algo simples de implementar mas que eu ainda não fiz...), você deve fazer o seu mapa no 1º quadrante do grid do Doom Builder (i.e.: no canto superior direito), de forma que os valores sejam sempre positivos.
Obs.2: No seu mapa do DB2 você poderá apenas adicionar itens com as propriedades que já estão implementadas na v.1.1, se não o UDMF editor vai acusar erro...

Amanhã eu faço mais coisas, e coisas mais úteis para o projeto, isso foi mais para dar uma animada no pessoal...

Falows! :wink:
Projetos em andamento
the Core
Eclipse

Projetos parados
Doom 3 on GZDoom
FSD Project

PC
AMD Athlon 64 X2 5200+ (2x 2.6Ghz)
2GB RAM (2x 1GB DDR2)
240GB (160GB SATA + 80GB SATA)
XFX nVidia GeForce 8600 GT (600mhz 256mb)
Placa Mãe ASUS M2N4 SLI (2x PCI-E 16x SLI, 4x DDR2 800, nForce 4)
Fonte 500W reais (esqueci o nome da marca)
Monitor LG Flatron 19'' LCD
Rico
Mensagens: 2354
Registrado em: Dom Set 10, 2006 11:49 am
Answers: 0
18
Localização: Atrás do DU0
Contato:

Re: What about...UDMF Editor?

Mensagem por Rico »

Pô, allegro? só tenho problemas com essa jossa :/


Fabio, você vai me desculpar cara... mas eu estou tão interessado neste seu projeto.
Que estou aqui 4 horas lendo sobre UDMF e outras coisas que podemos usar no futuro.
Eu realmente vou tentar te ajudar com muita coisa. SIM!
Mas eu vou querer ficar bem específico no trabalho de multi-plataforma.
Do seu trabalho Fabio, DO SEU TRABALHO, acho que podemos fazer pelo menos um editor simples, mas sempre com o pé junto com as freatures atuais dos ports cara.
E assim juntar mais um vez a Multi-Plataforma ao DOOM com o pé na edição.
Amanhã mesmo... pois são 4 pm, desculpa, estarei trabalhando no código e tornando-o mais acessível ao Linux. Qualquer mudança que eu faça, estarei mandando a você por e-mail.
Se rolar eu faço até Makefile com CMAKE e te explico o pouco que sei sobre ele para você ter ideia.
[xfire]p0br3[/xfire]
Futuro PC:

CPU: AMD Athlon x2 64Bits 7750 2.7GHz Black Edition
MoBo: Asus M2 ou M3.
VGA: XFX Geforce 9800 GTX 512MB ou 1GB/256Bits
HD: Seagate 1TB
PSU: ATX 600w REAIS
RAM: 4GB Ram DDR2 Kingstone @800MHz [2x2Gb]

Voltar para “Programação”