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
Drak[X]
Mensagens: 816
Registrado em: Sáb Fev 04, 2006 3:16 pm
Answers: 0
18
Localização: São Paulo - Brasil
Contato:

Re: What about...UDMF Editor?

Mensagem por Drak[X] »

Fabio914 escreveu:Realmente, não é nada otimizado se escrever todo um texto para representar cada setor, linha e vértice... Por exemplo, cada caractere tem tamanho de 1 byte, para representarmos o numero 1000000 gastamos 7 bytes, o que, se armazenado em memória (formato inteiro), gastariamos 4 bytes [isto sem levar em conta o texto que indica a que se refere este 1000000]. Mas isso não impede que tenhamos uma boa compactação, como a tabela ASCII tem 256 posições (ou seja, limitada) , uma compactação eficiente seria indicar quantas vezes aparece determinado caractere (assim teríamos 256 valores armazenados) e a posição XY que ele aparece no texto a cada vez (mais alguns números por caractere). Algo mais eficiente ainda (algo semelhante ao feito por compactadores como ZIP e RAR) é pegar palavras (ou até frases inteiras) com muita incidência no texto (no nosso caso, todas as palavras da descrição dos linedefs, sidedefs, sectors, things e vertex) e marcar quantas vezes estas se repetem (muitas vezes!) e armazenar a posição desta no texto. Assim não precisamos armazenar a mesma informação repetidas vezes, poupando memória...

Um exemplo:

O texto:

Código: Selecionar todos

vertex { // ID = 1
   x=100.00;
   y=200.00;
}
vertex { // ID = 2
   x=120.10;
   y=210.20;
}
Pode ser armazenado como (obs.: palavra seguida da incidência) :

Código: Selecionar todos

vertex 2 ID = 2 1 5 2 5 x= 2 y= 2 { 2 } 2 0. 4 0; 4 // 2
(mais a informação da posição de cada um)

Assim da pra se ter uma boa compactação de texto...
Agora vem o X da questão!!!

Será que usando a tabela UNICODE o resultado não seria mais eficiente!?
Acredito que sim, já que o UNICODE consegue representar uma quantidade incrivelmente maior de caracteres em relação a tabela ASCII.
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)
Avatar do usuário
DU0
Mensagens: 6689
Registrado em: Sáb Abr 01, 2006 6:59 am
Answers: 0
18
Localização: Deimos Lab.
Contato:

Re: What about...UDMF Editor?

Mensagem por DU0 »

Mas e precisamos de mais caracteres?
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
Avatar do usuário
Logan MTM
Mensagens: 2895
Registrado em: Dom Dez 11, 2005 8:12 pm
Answers: 0
18
Localização: Rio de Janeiro - Brasil
Contato:

Re: What about...UDMF Editor?

Mensagem por Logan MTM »

Qual ocupa menos espaço?

Código: Selecionar todos

sector // 1
{
heightfloor = 32;
heightceiling = 160;
texturefloor = "GSTONE2";
textureceiling = "GSTONE2";
lightlevel = 128;
}
ou

Código: Selecionar todos

st // 1
{
hf = 32;
hc = 160;
tf = "GSTONE2";
tc = "GSTONE2";
ll = 128;
}
Simples. :?
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
17
Localização: Sampa/Sanca
Contato:

Re: What about...UDMF Editor?

Mensagem por Fabio914 »

Logan MTM escreveu:Qual ocupa menos espaço?

Código: Selecionar todos

sector // 1
{
heightfloor = 32;
heightceiling = 160;
texturefloor = "GSTONE2";
textureceiling = "GSTONE2";
lightlevel = 128;
}
ou

Código: Selecionar todos

st // 1
{
hf = 32;
hc = 160;
tf = "GSTONE2";
tc = "GSTONE2";
ll = 128;
}
Simples. :?
Em termos de compactação a diferença não seria muita... Em vez de armazenarmos quantas vezes "heightfloor" apareceu, por exemplo, e em quais posições, estaríamos armazenando quantas vezes e posições "hf" apareceu. Não poupariamos 9 bytes (11 bytes de heightfloor - 2 bytes de hf) por repetição (pois compactando acabamos com a repetição), estaríamos poupando 9 bytes no geral, o que não é tão significante... Isso teria grande diferença se não compactarmos o texto, mas mesmo assim ainda ficaria um texto muito grande e pesado pois ainda temos milhares de setores, linedefs, sidedefs, things, vertex num mapa bem elaborado...

BTW: Que ferramenta faremos? Quem de fato pretende participar? ...
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
17
Localização: Atrás do DU0
Contato:

Re: What about...UDMF Editor?

Mensagem por Rico »

1 caracter não é 8 bits?
Não me lembro agora.
Lembrando que um caractér contém 8 números na linguagem do computador.

Afinal. Fabio, entre em contato comigo no Google Talk.

Já que é muito provável que faremos em C++, darei uma pausa aqui no C# com o CHAT.

Pq eu não tenho nenhuma ideia de como funciona o UDMF, mas sei o nome ao menos. Pelo menos links para eu estudar seria bem vindo.



"Lendo"::: WOW
[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
Logan MTM
Mensagens: 2895
Registrado em: Dom Dez 11, 2005 8:12 pm
Answers: 0
18
Localização: Rio de Janeiro - Brasil
Contato:

Re: What about...UDMF Editor?

Mensagem por Logan MTM »

Mas 8 bits são 1 byte. Não? :?

@Fabio
Olha esse tópico: http://forum.drdteam.org/viewtopic.php?f=22&t=4725
Avatar do usuário
Drak[X]
Mensagens: 816
Registrado em: Sáb Fev 04, 2006 3:16 pm
Answers: 0
18
Localização: São Paulo - Brasil
Contato:

Re: What about...UDMF Editor?

Mensagem por Drak[X] »

Rico escreveu:1 caracter não é 8 bits?
Não me lembro agora.
Lembrando que um caractér contém 8 números na linguagem do computador.

Afinal. Fabio, entre em contato comigo no Google Talk.

Já que é muito provável que faremos em C++, darei uma pausa aqui no C# com o CHAT.

Pq eu não tenho nenhuma ideia de como funciona o UDMF, mas sei o nome ao menos. Pelo menos links para eu estudar seria bem vindo.



"Lendo"::: WOW
Você não costuma visitar o portal né?

BOMBA!!! Segredo descoberto!!

No final deste artigo existem 3 links que devem ajudar você a entender melhor o UDMF.
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)
Avatar do usuário
Fabio914
Mensagens: 1757
Registrado em: Dom Mai 21, 2006 4:38 pm
Answers: 0
17
Localização: Sampa/Sanca
Contato:

Re: What about...UDMF Editor?

Mensagem por Fabio914 »

Rico escreveu:1 caracter não é 8 bits?
Não me lembro agora.
Logan MTM escreveu:Mas 8 bits são 1 byte. Não? :?
Exatamente! :wink:
Logan MTM escreveu: @Fabio
Olha esse tópico: http://forum.drdteam.org/viewtopic.php?f=22&t=4725
Sim, usando a compactação os resultados de tamanhos serão semelhantes aos do formato Hexen. Mas algo que me preocupa é o seguinte: para ler um arquivo compactado eventualmente o programa deverá (poderá) descompacta-lo para memória RAM, então durante o "loading" do mapa o consumo de memória RAM pode ser imenso (enquanto se carrega e lê os dados do UDMF) o que pode fazer com que este formato não seje carregado em sistemas antigos (dependendo do mapa)... Não tenho certeza se isso pode ocorrer, eu não faço idéia de como foi feito o sistema de leitura dos pk3 no ZDoom...


@ALL:

Mas e ai pessoal... Alguma idéia/sugestão para começarmos?
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
Logan MTM
Mensagens: 2895
Registrado em: Dom Dez 11, 2005 8:12 pm
Answers: 0
18
Localização: Rio de Janeiro - Brasil
Contato:

Re: What about...UDMF Editor?

Mensagem por Logan MTM »

Sugestão?

C++/C#
Rico
Mensagens: 2354
Registrado em: Dom Set 10, 2006 11:49 am
Answers: 0
17
Localização: Atrás do DU0
Contato:

Re: What about...UDMF Editor?

Mensagem por Rico »

Se eu sei bem, pode-se usar as duas linguagens.

Bom, o legal seria pegar os códigos do ZDOOM para ver como funciona PK3/PK7

Sugestão: Estudar a LIB ZLIB que é usada para descompactar PK3.

Se o loco colocar todos os mapas em 1 wad VAI SER UM CU descompactar sim.
Mas se o nego colocar 1 mapa para cada wad é mais leve.
Descompactar na memória é um procedimento, outro é no HD e deleta-lo após o uso. é o meu pensamento.

Afinal, não temos que primeiramente pensar no código que interprete o texto puro primeiro? (UDMF)
[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]