Um pouco das caracteristicas das Mirage-based
Página 1 de 1
Um pouco das caracteristicas das Mirage-based
Créditos:
Não sei bem como fui encontar este artigo... ~;D
Mas, o link que havia indicava a uma página da engine Eclipse,
então,
créditos ao povo das terras de lá! ~XD
PS: link do artigo original, em inglês
Mirage Source Programming Manual
Escrito por: DFA
Website: http://echostorms.net/
Data de Início: Julho, 08 2008
Versão atual: 0,18
Mirage Source 4
Website: http://web.miragesource.com/
Forum URL: http://web.miragesource.com/forums/index.php
Este manual foi escrito para Mirage Source 4
Download Source Mirage - http://echostorms.net/Mirage/MS4.rar
Para obter informações adicionais, leia os comentários escritos no cliente e servidor de origem da versão mais recente, e ainda mais informações, leia as discussões do fórum e tutoriais.
Dependências de arquivo
Dynamic Link Library (DLL) - No Windows, um módulo de código que é carregado em tempo de execução por um determinado processo.
OCX - A extensão do arquivo (nome e genérico) para OLE controle personalizado.
Estes são os ficheiros que são necessários para poder executar os aplicativos.
Visual Basic 6,0
O cliente eo servidor ambos exigem a dependências arquivo seguinte.
- MSVBVM60.dll * Visual Basic for Applications (VBA), objetos de runtime e Procedimentos
- VB6.olb * Objetos e procedimentos
- Stdole2.tlb * Automação OLE
O Visual Basic 6.0 pacote de arquivos de tempo de execução contém todos os arquivos necessários.
Cliente
- Richtx32.ocx * Rich módulo caixa de texto
- Mswinsck.ocx * Winsock arquivo de biblioteca
- Dx7vb.dll * DirectX7 biblioteca
DirectX7 ou superior também é necessária na máquina.
Servidor
- Tabctl32.ocx * Tabbed Dialog Control
- Richtx32.ocx * Rich módulo caixa de texto
- Mswinsck.ocx * Winsock arquivo de biblioteca
- Mscomm32.ocx * Comm Control
- Mscomctl.ocx * Windows comum Controls
Considere o impacto sobre a memória eo desempenho quando adicionando recursos que exigem as dependências do novo arquivo.
Links
Fabrico de componentes DLL - http://directx4vb.vbgamer.com/DirectX4VB/Tutorials/GeneralVB/GM_VBDLL.asp
Cliente
Aprendizagem do Código
Para se familiarizar com alguns dos códigos, começar por analisar alguns dos arquivos menores primeiro módulo, e lendo os comentários.
modDeclares, modGlobals, modConstants e modTypes são os primeiros pequenos módulos que um desenvolvedor deve se familiarizar com. Posteriormente, o progresso de aprendizagem para as funções de jogador ModDatabase, como GetPlayerName, GetPlayerClass, etc ..
Passe algum tempo familiarizar-se com estes módulos antes de avançar para outras coisas.
Muito pode ser aprendido através do Object Browser (pressione F2 para trazê-lo para cima) e explorando com as bibliotecas fornecidas.
Tudo dentro da biblioteca Mirage é o que contém o motor. Sinta-se livre para explorar outras bibliotecas, como VB, VBA, e VBRUN, ele mostra como usar a linguagem VB.
Links
Game Programming Wiki: http://wiki.gamedev.net/index.php/Main_Page
http://www.visibleprogress.com/vb6_coding_tips.htm - VB6 codificação dicas para melhorar suas habilidades.
Ambos os recursos devem ser cuidadosamente lido e estudado.
Application Performance
Ao implementar novas funcionalidades para o motor, uma das primeiras coisas a ser considerado é como ela afetará o desempenho? Uma forma de monitorar como os recursos de desempenho de impacto é remover a tampa da FPS, e observando a mudança de FPS depois de adicionar um pedaço de código.
Em gameloop do cliente, existe um limite FPS, ele contém o código
Sleep 1
DoEvents
DoEvents inclui uma chamada para Sleep 0.
Sleep 1 é adicionado para fazer o processador ignorar o segmento de 1 milissegundo para ajudar a tampa do FPS, e libera o processador para realizar outras operações necessárias para o sistema operacional. Retirar a tampa FPS fará com que a CPU rodar o GameLoop para a sua plena capacidade, que é a melhor escolha para jogadores que não são multi-tasking.
Temporizadores (o controle Visual Basic)
Timers em Visual Basic são imprecisos, têm resultados diferentes em computadores diferentes (dependendo da velocidade do processador), e não deve ser usado.
Alternativa para temporizadores
Usando GetTickCount (ou similar), vai permitir tempo para ter uma precisão de milésimos de segundos, e têm muito pouco impacto sobre o desempenho comparado ao Visual Basic Temporizadores. Timers uso de CPU e memória, junto com muitos outros controles.
Outras dicas
Em vez de utilizar caixas de imagem, utilizando as funções do DirectDraw Blit seria uma alternativa melhor.
Criptografia
Recursos de clientes
Gráficos, efeitos sonoros e outros arquivos podem ser protegidas usando criptografia. A tração traseira seria que a decodificação real (e descompressão, possivelmente, também) pode ser lento.
Dicas para esconder arquivos - http://directx4vb.vbgamer.com/DirectX4VB/Tutorials/GeneralVB/GM_HideFiles.asp
Pacotes
Criptografia de pacotes / compressão geralmente não é recomendado para problemas de velocidade. Apenas os dados mais importantes pacotes sensíveis devem ser criptografados, levemente com XOR, se possível.
Gráficos
Os gráficos são baseados em um sistema de azulejo 32x32 pixel. Todas as peças, itens e sprites são 32px de largura por 32px de altura.
Ferramentas
Para ajudar com a adição de novos gráficos, programas como o Paint Shop Pro oferece muitas características úteis, tais como, a definição de grade de 32x32. Quando as linhas de grade são definidas, eo rato faz uma seleção através de uma grade, ele fica vermelho para mostrar precisão. Paint Shop Pro também oferece um recurso conhecido como "snap-to-grid" para a ferramenta de seleção, o que torna as seleções só é possível na grelha. Isso faz com que o movimento de seleção em incrementos de grade (que são 32 neste caso) e torna mais fácil a re-organizar os arquivos gráficos, incluindo tilesets. Google Search Snap-à-grade para esclarecimentos adicionais.
Gerenciamento de memória
Gerenciamento de memória deve ser a primeira coisa em consideração antes e durante o desenvolvimento de gráficos.
Quando a edição de gráficos existentes ou criar novos, para tentar evitar o espaço em branco, como um quadrado 32x32 todo em branco. Espaço em branco não inclui os poucos espaços ao redor de gráficos.
Problemas no passado
Na história da Konfuze motor (que é baseado fora Fonte Mirage) e motores Konfuze base, houve uma adição de recurso que permitiu que vários tilesets para ser carregado ao mesmo tempo, que foram todos carregados durante a inicialização. Se os desenvolvedores tinham 250MB de tilesets, que exigia que todos os jogadores tenham pelo menos 250MB de memória disponível para tilesets.
Quanto à Fonte Mirage actual 4, cada mapa pode conter apenas 1 tileset ao mesmo tempo, esta é uma forma de gerenciamento de memória. O editor de mapas permite a seleção do tileset.
Outras dicas
Sprites e itens devem ser otimizados de forma semelhante, para carregar apenas o que precisava ser desenhada na tela do jogo, e descarregado depois que não está sendo desenhado. Desde Mirage Sourcekeeps todos os sprites e itens na memória, isso pode resultar em erros de falta de memória para os usuários em máquinas low-end.
Adicionando gráficos
Adicionando Azulejo
Para adicionar mais tilesets, eles devem ser adicionados à pasta gfx e nomeado tiles1.bmp, tiles2.bmp, tiles3.bmp ...
O cliente irá contar o número de tilesets até o próximo arquivo não existe, não pule números.
Adicionando sprites
O formato sprites é composto por 12 quadros e parecem formar uma linha horizontal.
Adicionar i novos sprites no mesmo formato que as imagens de exemplo fornecido.
Adicionando Itens
Os itens consistem de apenas 1 frame, e parecem formar uma linha vertical.
Adicionar i novos itens no mesmo formato que as imagens de exemplo fornecido
Adicionando Magias
O formato de magias pode consistir de qualquer número de quadros, e parecem formar uma linha horizontal.
Adicionar i novas magias no mesmo formato que as imagens de exemplo fornecido.
Determinação de Dimensões
Dimensões - A altura ea largura de uma imagem.
Determinando Largura
Há um caminho simples para determinar a largura correta de sprites
12 frames * 32 pixels = 384
384 é a largura necessária para a sprites arquivo gráfico.
Determinação da altura (idade)
Há também uma maneira simples de determinar a altura correcta de sprites.bmp
N = número de sprites (indo verticalmente em 32 incrementos de pixel)
Height = N * 32
Se houver 5 sprites, a altura deve ser de 160, e da largura da imagem deve ser 384.
Determinar as dimensões dos itens
Um conceito semelhante se aplica a itens, a largura deve ser sempre 32, ea altura será N * 32.
Resultados Gráficos
Mirage Sourceuses DirectDraw7 e GDI para desenhar gráficos na tela do jogo.
DirectDraw
O DirectDraw é uma interface de software que fornece acesso direto para exibir os dispositivos, mantendo a compatibilidade com a interface dispositivo gráfico Windows (GDI). Não se trata de um alto nível de interface de programação de aplicativos (API) para gráficos.
DirectDraw avalia as capacidades do hardware de vídeo, fazendo uso de características especiais do hardware sempre que possível. Por exemplo, se sua placa de vídeo suporta blitting hardware, blits delegados DirectDraw para a placa de vídeo, aumentando consideravelmente o desempenho. Além disso, DirectDraw fornece uma camada de emulação de hardware (HEL) para dar suporte a recursos quando o hardware não.
DirectDraw existe no Windows, ganhando a vantagem de 32-bit de resolução e memória de um modelo de memória plana que fornece o sistema operativo. DirectDraw apresenta vídeo e memória de sistema como grandes blocos de armazenamento, não tão pequenos segmentos. Se você já usou segmento: offset endereçamento, você irá rapidamente começar a apreciar este modelo de memória "flat".
DirectDraw é usada para processar gráficos em aplicações onde a performance de topo é importante.
- Http://en.wikipedia.org/wiki/DirectDraw
Memória
Por padrão, DirectDraw cria uma superfície de exposição da memória, a menos que não se encaixam, caso em que cria a superfície na memória do sistema. Você pode escolher mostrar ou explicitamente a memória do sistema, incluindo o DDSCAPS_SYSTEMMEMORY ou DDSCAPS_VIDEOMEMORY bandeiras no membro dwCaps da estrutura DDSCAPS2. O método falhar, retornando um erro, se não pode criar a superfície no local especificado.
A superfície do primário deve usar a memória mostrar. Se DDSCAPS_VIDEOMEMORY é usado para inicializar o backbuffer, pode aumentar o desempenho, dependendo do hardware, caso contrário, pode paralisar o desempenho.
Primário superfície e Backbuffer
Quando a cena (frame) está sendo construído, tudo está sendo elaborado para o backbuffer, então o backbuffer é invertida, ou seja, a superfície primária e os lugares switch backbuffer. A superfície do primário é o que está sendo mostrada. Isso é necessário, caso contrário, o cenário pode ser visto visivelmente construído 1 peça de cada vez. Após as superfícies foram invertidas, o backbuffer estiver desmarcada, eo processo se repete.
Superfícies
DirectDraw7 pode armazenar bitmaps em qualquer memória do sistema ou exibir (vídeo) de memória no formato de um 'DirectDrawSurface7'. O DirectDraw é capaz de lidar com milhares de superfícies sem qualquer sobrecarga.
Clipper
A Clipper só é usado no modo com janelas, e é necessária para que ele possa interagir adequadamente com o Windows. Se um cortador for usado, quando uma janela vai sobre uma superfície, ele aparecerá na janela, em vez de desenho sobre ele.
Transparência (cor Keying)
Ao inicializar o DirectDraw, uma chave de cores é usado para definir a cor da máscara de um buffer. Quando um retângulo é blitted, ele tem a opção de usar a cor da máscara. Os pixels que combinam com a cor da máscara não será copiado para o buffer. Isto é usado para criar "irregular" imagens não retangulares, como sprites.
A estrutura abaixo é usado para descrever uma fonte ou chave cor destino ou espaço de cores. A chave de cores é especificado se os valores de gama baixa e alta são as mesmas.
Public Type DDCOLORKEY
Baixa como Long
Alto como Long
End Type
Baixo - baixo valor, inclusive, da gama de cores que está a ser utilizado como a chave de cores.
Alto - Alto valor, inclusive, da gama de cores que está a ser utilizado como a chave de cores.
A função RGB () pode ser usado para baixa e alta.
Blitting
Blitting é o processo de cópia de todo ou parte de uma superfície para outra superfície. A área que você deseja copiar é definida por um retângulo - você indica o canto superior esquerdo e canto inferior direito cantos.
Blt é o mais flexível e BltFast é 10% mais rápido, mas apenas se não houver blitter hardware.
Há cinco maneiras diferentes de blitting:
1. Blt destRect (As RECT, DDS, como DirectDrawSurface7, srcRect As RECT, bandeiras como CONST_DDBLTFLAGS) As Long
Este é o método mais seguro, mas é ligeiramente mais lento. Você deve informar a função do retângulo de destino e do retângulo de origem. Isso é útil, porque você pode aplicar as funções básicas de alongamento. ie. a fonte define um retângulo de tamanho 100x100, o retângulo destino é 200x200 - DirectDraw vai esticar a seção de 100x100 para caber uma seção de 200x200, basicamente dobrando o tamanho.
2. BltColorFill destRect (As RECT, fillvalue As Long) As Long
Esta função não é realmente uma cópia da imagem ou para qualquer lugar. Isso preenche a área do retângulo com uma cor.
3. BltFast dx (como DDS, Long, dy As Long As DirectDrawSurface7, srcRect As RECT, trans como CONST_DDBLTFASTFLAGS) As Long
Este método é utilizado a mais, simplesmente porque é mais rápido. Você não pode aplicar quaisquer transformações neste blit - copia o retângulo para o destino com o mesmo tamanho.
4. BltFx (destRect As RECT, DDS, como DirectDrawSurface7, srcRect As RECT, bandeiras como CONST_DDBLTFLAGS, BltFx Como DDBLTFX) As Long
Esta função é usada para aplicar as transformações à imagem, como alfa-mistura, espelhando, alongamento e muito mais. É muito semelhante à função BLT. (Slow, e hardware-dependente)
5. BltToDC (hdc As Long, srcRect As RECT, destRect As RECT)
Isto é para a interação entre os gráficos DirectDraw e funções do Windows. Se você já usou a API do Windows extensivamente então você vai ter usado DC superfícies em algum momento - este permite a cópia de uma superfície DirectDraw para a DC.
Alpha-Blending com vbDABL
vbDABL é escrito em C + + e ASM VB com os usuários em mente. Ele fornece um método alternativo de alfa-mistura em DirectDraw7, mas é limitado a 16-bit modo de profundidade de cor.
http://voodoovb.vbgamer.com/dd7vbdabl.html
http://directx4vb.vbgamer.com/DirectX4VB/Tutorials/DirectX7/DD_vbDABL.asp
Outros Links
Tutoriais para DirectX7 - http://directx4vb.vbgamer.com/DirectX4VB/TUT_DX7Start.asp
Leia os tutoriais DirectDraw para mais informações.
A ordem de partida sugerido ler: Fullscreen mode, modo de janela, desenho primitivos, texto de desenho, Tile Engines. Depois, sinta-se livre para explorar o resto.
http://echostorms.net/programming/vb6/
Arquivo de DirectX7 exemplos, Visual Basic 6 exemplos de codificação e Visual Basic 6 e-livros. Os e-books variam do básico ao nível de peritos.
DirectDraw7 / Direct3D Hybrid Engine - http://rookscape.com/vbgaming/tutBT.php
DirectDraw7 usando C + + tutorial, contém boas informações no topo da página
http://www.gamedev.net/reference/articles/article608.asp
Graphics Device Interface (GDI)
GDI é uma interface do Microsoft Windows para representar objectos gráficos e transmiti-las para dispositivos de saída, como monitores e impressoras.
(Mais informações - http://en.wikipedia.org/wiki/Graphics_Device_Interface)
A desvantagem da GDI é que ele não foi projetado para alta performance de software multimédia, foi feito para ser usado por aplicativos empresariais, como processadores de texto e planilha. GDI fornece acesso a um buffer de vídeo na memória do sistema, memória de vídeo não, e não aproveitar os recursos especiais que algumas placas de vídeo proporcionam. Em suma, a GDI é grande para a maioria das aplicações de negócios, mas o seu desempenho é muito lento para multimédia ou software do jogo.
Por outro lado, DirectDraw pode dar-lhe desenhar, que representam a memória de vídeo real. Isto significa que quando você usa o DirectDraw, você pode escrever diretamente para a memória na placa de vídeo, tornando suas rotinas de gráficos extremamente rápido. Estas superfícies são representados como blocos contíguos de memória, tornando mais fácil para realizar endereçamento dentro deles.
BitBlt
BitBlt GDI é uma operação, que é lento em comparação com o DirectDraw. Nas versões mais recentes do Mirage, todas as instâncias do BitBlt foram removidos e substituídos com a função DirectDraw BltToDC para uma melhoria na velocidade e memória.
(Mais informações - http://en.wikipedia.org/wiki/Bitblt)
GDI é usada muitas vezes no cliente de origem Mirage. Tudo o que não é blitted usando o DirectX está usando GDI.
Cada caixa de imagem contém um Device Context (DC), que de certa forma, é como um amortecedor de volta, mas não é o mesmo, isso torna possível para o DirectX para interagir com caixas de imagem usando BltToDC.
Blitting: GDI vs DirectDraw7
DirectDraw deve ser usado durante GDI sempre que possível, DirectDraw é muito mais rápido e pode ser otimizada para a eficiência da memória. Por exemplo, em vez de construir um inventário visual como um grande arrasta-box capaz de imagem contendo um conjunto de caixas de imagem usando BitBlt ou BltToDC na melhor das hipóteses. Um jogo de DirectX aparecerá mais como um jogo comercial.
Desenho de texto: GDI vs DirectDraw7
Ambos os GDI e DirectDraw tem funções internas para a elaboração de texto na tela. Ao usar o GDI para adicionar texto a um backbuffer, requer a superfície a ser bloqueado, e desbloqueado depois de todas as operações de desenho de texto completo são para o quadro atual. DirectX função de desenho de texto bloqueia e desbloqueia backbuffer superfície toda vez que ele é chamado, o que resulta em sobrecarga muito. Por sua vez, o DirectX função de desenho de texto oferece um pouco mais de flexibilidade.
GDI vs Direct3D
Aplicativos Direct3D coexistir com aplicações GDI e ambos têm acesso ao hardware gráfico através do driver de dispositivo para a placa gráfica. Ao contrário do GDI, Direct3D pode tirar proveito dos recursos de hardware quando um dispositivo HAL está selecionada. HAL fornecer dispositivos de aceleração de hardware baseado no conjunto de recursos suportados pela placa gráfica.
Problemas / Questões
Configuração de ppp
Se o cliente foi desenvolvida usando tamanho normal (96 ppp), todos os usuários também devem ter o seu sistema de configuração de DPI para igualá-la. Os usuários com um menor ou maior dimensão terão problemas com alguma distorção desenho GDI.
Para alterar a configuração de DPI, usando o Windows XP, o botão direito do mouse no desktop, Propriedades -> guia Configurações, botão Avançadas -> Separador Geral, DPI Setting
Servidor
Hospedagem
Se possível, use uma máquina de hospedagem que pode ser dedicado apenas para hospedagem, e nunca é usada de outra forma.
Memória
Quando o servidor é inicializado, ele carrega todas mapa, npc, fazer compras, e magia de dados em memória. A máquina que hospeda o servidor deve ter memória suficiente para todos os dados. A máquina também vai precisar de mais memória RAM para outras operações que podem utilizar a memória. Se a memória é um problema, tente fechar todos os outros programas que não sejam necessários para executar o sistema operacional.
Uso de CPU
Uso da CPU é feita principalmente por quantos mapas ativos (jogadores com mapas sobre elas), existem, e quantos jogadores estão jogando ativamente. Definir a prioridade alta ou AboveNormal pode resultar em um aumento de desempenho do aplicativo de servidor, mas pode causar o sistema para lag.
Bandwidth
Evite a utilização de máquinas ligados a roteadores, conexões sem fio, ou está conectado a qualquer coisa que partes de largura de banda ou latência aumenta.
Rede
O servidor se comunica com os clientes usando pacotes String.
Pacotes String
String pacotes são lentos e os lotes utilizar largura de banda.
Tamanhos de pacote pode ser determinada por ..
6 + Len (string) * 2 bytes
String é o pacote
Len retorna o número de caracteres dentro da cadeia
Envio e análise de pacotes String
Pacotes de dados Mapa tem um sistema de cache, sua finalidade é a pré-compilação dos pacotes de cadeia. Todos os outros pacotes são construídos imediatamente antes do envio, que é um tempo de operação dispendiosa. Para reduzir a largura de banda, os mapas podem ser embalados com o cliente e com atualizações, para evitar o envio de pacotes de dados grande mapa sobre a rede. Depois que o cliente ou servidor recebe um pacote, ele deve então analisá-lo em uma matriz de seqüências através da divisão da seqüência de pacotes por SEP_CHAR
No cliente, na África Sub HandleData, ele contém o código
Dim Parse () As String
Parse = Split (dados, SEP_CHAR)
Os dados são os pacotes String, ea função Split separa as partes da cadeia de SEP_CHAR no Parse () array.
Aqui está um exemplo de análise de um pacote
O primeiro elemento da Parse () matriz é "spawnitem"
A matriz é 0 indexada, tão Parse (0) contém a string "spawnitem"
'Este é o método antigo
Select Case Parse (0)
Processo packetName "
'...
"Analisar o pacote
'Fazer alguma coisa
Processo spawnitem "
n = Val (Parse (1))
MapItem (n). Num = Val (Parse (2))
MapItem (n). Value = Val (Parse (3))
MapItem (n). Dur = Val (Parse (4))
MapItem (n). X = Val (Parse (5))
MapItem (n). Y = Val (Parse (6))
A função Val retorna um número de uma seqüência, as variáveis estão sendo atribuído por acessar os elementos da matriz de Parse.
No lado do servidor, a parte do código que envia o pacote
Packet = "spawnitem" & SEP_CHAR & i & & SEP_CHAR itemNum & SEP_CHAR & ItemVal & SEP_CHAR & MapItem (MapNum, I). Dur SEP_CHAR & & & SEP_CHAR X & Y & END_CHAR
Call SendDataToMap (MapNum, Packet)
O SendDataToMap Sub envia o pacote para cada jogador no mapa.
Problemas / Questões
Utilizando MsgBox, avisos, e modal nada congela a thread de execução. O NPC irá parar o processamento, eo servidor irá parar de enviar pacotes até que o evento é tratado. Isso também permite aos menus (construído a partir do menu Editor).
DirectDraw Glossário
buffer de fundo - uma superfície à qual nonvisible bitmaps e outras imagens podem ser tiradas enquanto o primário superfície exibe a imagem visível no momento.
blit - A transferência de blocos de bits.
verificação de limites - O processo de verificação de que uma imagem na tela é exibido dentro dos limites da tela.
Clipper - Um objeto DirectDrawClipper.
detecção de colisão - O processo de determinar se os pixels de duas imagens de compartilhar o mesmo local na tela.
chave de cores - um valor que indica a cor a ser utilizada para efeitos transparentes ou translúcidas. Por exemplo, ao usar um hardware blitter, todos os pixels de uma área retangular são blitted, exceto o valor que foi definido como a chave de cores, o que cria sprites não retangular sobre uma superfície.
chave destino cor - a cor que (no caso de blitting) é substituído ou (no caso de sobreposições) é coberto na superfície de destino.
janela do dispositivo - A janela da aplicação visível de que a Microsoft (R) DirectDraw (r) utiliza para mostrar. Aplicações podem ter um dispositivo para cada dispositivo de vídeo ligado a um determinado computador.
Flip - O processo de trocar os endereços associados com as costas e os amortecedores da frente. Esta swaps efetivamente a imagem no buffer de volta para o buffer de frente, assim, a exibição da imagem.
lançando cadeia - Uma série de superfícies ligados um ao outro que pode ser invertida.
lançando superfície - Qualquer pedaço de memória que pode ser invertida.
janela de foco - Uma janela de aplicação, visíveis ou não visíveis, que usa o DirectDraw para ligar a janela. O manipulador de janela foco de mensagem de entrada recebe mensagens transmitidas pelos DirectDraw. Os aplicativos podem ter apenas uma janela de foco. Veja também a janela do dispositivo.
amortecedor dianteiro - amortecedor O primeiro de uma cadeia de inversão. Em muitos casos, esta é a superfície visível primário Em outros casos (como uma cadeia lançando de texturas) o buffer de frente é a superfície que o motor 3-D recebe a textura, mas não o primário superfície, mas não é exibido. No caso de inversão de sobreposição superfícies, o amortecedor dianteiro é exibido, mas é apenas uma superfície coberta na superfície primária. Consulte também superfície primária.
HAL - A camada de abstração de hardware. Consiste de hardware e mecanismos de driver de dispositivo que isolar as aplicações dos detalhes da implementação do dispositivo específico. Se um recurso solicitado por um aplicativo não é executado pelo hardware atual, a capacidade é emulado pelo software.
blitter hardware - Um componente de hardware, embutido no adaptador de vídeo, que realiza operações blit eficiente.
HEL - A camada de emulação de hardware. Fornece baseado em software de emulação de características que não estão presentes no hardware.
fora da superfície da tela - Uma área retangular conceitualmente na memória que geralmente é usado para armazenar bitmaps ser blitted para um buffer de fundo antes de serem exibidos. Comumente usado para armazenar sprites.
superfície primária - A área de memória que contém a imagem a ser exibida no monitor. Em DirectX, o primário superfície é representado pelo objeto DirectDraw principal.
chave da fonte de cor - A cor que (no caso de blitting) não é copiada, ou (no caso de sobreposições) não visível, o destino.
alongamento - Blitting uma imagem em um destino com dimensões diferentes. Esta operação é suportada directamente por algum hardware.
Não sei bem como fui encontar este artigo... ~;D
Mas, o link que havia indicava a uma página da engine Eclipse,
então,
créditos ao povo das terras de lá! ~XD
PS: link do artigo original, em inglês
Mirage Source Programming Manual
Escrito por: DFA
Website: http://echostorms.net/
Data de Início: Julho, 08 2008
Versão atual: 0,18
Mirage Source 4
Website: http://web.miragesource.com/
Forum URL: http://web.miragesource.com/forums/index.php
Este manual foi escrito para Mirage Source 4
Download Source Mirage - http://echostorms.net/Mirage/MS4.rar
Para obter informações adicionais, leia os comentários escritos no cliente e servidor de origem da versão mais recente, e ainda mais informações, leia as discussões do fórum e tutoriais.
Dependências de arquivo
Dynamic Link Library (DLL) - No Windows, um módulo de código que é carregado em tempo de execução por um determinado processo.
OCX - A extensão do arquivo (nome e genérico) para OLE controle personalizado.
Estes são os ficheiros que são necessários para poder executar os aplicativos.
Visual Basic 6,0
O cliente eo servidor ambos exigem a dependências arquivo seguinte.
- MSVBVM60.dll * Visual Basic for Applications (VBA), objetos de runtime e Procedimentos
- VB6.olb * Objetos e procedimentos
- Stdole2.tlb * Automação OLE
O Visual Basic 6.0 pacote de arquivos de tempo de execução contém todos os arquivos necessários.
Cliente
- Richtx32.ocx * Rich módulo caixa de texto
- Mswinsck.ocx * Winsock arquivo de biblioteca
- Dx7vb.dll * DirectX7 biblioteca
DirectX7 ou superior também é necessária na máquina.
Servidor
- Tabctl32.ocx * Tabbed Dialog Control
- Richtx32.ocx * Rich módulo caixa de texto
- Mswinsck.ocx * Winsock arquivo de biblioteca
- Mscomm32.ocx * Comm Control
- Mscomctl.ocx * Windows comum Controls
Considere o impacto sobre a memória eo desempenho quando adicionando recursos que exigem as dependências do novo arquivo.
Links
Fabrico de componentes DLL - http://directx4vb.vbgamer.com/DirectX4VB/Tutorials/GeneralVB/GM_VBDLL.asp
Cliente
Aprendizagem do Código
Para se familiarizar com alguns dos códigos, começar por analisar alguns dos arquivos menores primeiro módulo, e lendo os comentários.
modDeclares, modGlobals, modConstants e modTypes são os primeiros pequenos módulos que um desenvolvedor deve se familiarizar com. Posteriormente, o progresso de aprendizagem para as funções de jogador ModDatabase, como GetPlayerName, GetPlayerClass, etc ..
Passe algum tempo familiarizar-se com estes módulos antes de avançar para outras coisas.
Muito pode ser aprendido através do Object Browser (pressione F2 para trazê-lo para cima) e explorando com as bibliotecas fornecidas.
Tudo dentro da biblioteca Mirage é o que contém o motor. Sinta-se livre para explorar outras bibliotecas, como VB, VBA, e VBRUN, ele mostra como usar a linguagem VB.
Links
Game Programming Wiki: http://wiki.gamedev.net/index.php/Main_Page
http://www.visibleprogress.com/vb6_coding_tips.htm - VB6 codificação dicas para melhorar suas habilidades.
Ambos os recursos devem ser cuidadosamente lido e estudado.
Application Performance
Ao implementar novas funcionalidades para o motor, uma das primeiras coisas a ser considerado é como ela afetará o desempenho? Uma forma de monitorar como os recursos de desempenho de impacto é remover a tampa da FPS, e observando a mudança de FPS depois de adicionar um pedaço de código.
Em gameloop do cliente, existe um limite FPS, ele contém o código
Sleep 1
DoEvents
DoEvents inclui uma chamada para Sleep 0.
Sleep 1 é adicionado para fazer o processador ignorar o segmento de 1 milissegundo para ajudar a tampa do FPS, e libera o processador para realizar outras operações necessárias para o sistema operacional. Retirar a tampa FPS fará com que a CPU rodar o GameLoop para a sua plena capacidade, que é a melhor escolha para jogadores que não são multi-tasking.
Temporizadores (o controle Visual Basic)
Timers em Visual Basic são imprecisos, têm resultados diferentes em computadores diferentes (dependendo da velocidade do processador), e não deve ser usado.
Alternativa para temporizadores
Usando GetTickCount (ou similar), vai permitir tempo para ter uma precisão de milésimos de segundos, e têm muito pouco impacto sobre o desempenho comparado ao Visual Basic Temporizadores. Timers uso de CPU e memória, junto com muitos outros controles.
Outras dicas
Em vez de utilizar caixas de imagem, utilizando as funções do DirectDraw Blit seria uma alternativa melhor.
Criptografia
Recursos de clientes
Gráficos, efeitos sonoros e outros arquivos podem ser protegidas usando criptografia. A tração traseira seria que a decodificação real (e descompressão, possivelmente, também) pode ser lento.
Dicas para esconder arquivos - http://directx4vb.vbgamer.com/DirectX4VB/Tutorials/GeneralVB/GM_HideFiles.asp
Pacotes
Criptografia de pacotes / compressão geralmente não é recomendado para problemas de velocidade. Apenas os dados mais importantes pacotes sensíveis devem ser criptografados, levemente com XOR, se possível.
Gráficos
Os gráficos são baseados em um sistema de azulejo 32x32 pixel. Todas as peças, itens e sprites são 32px de largura por 32px de altura.
Ferramentas
Para ajudar com a adição de novos gráficos, programas como o Paint Shop Pro oferece muitas características úteis, tais como, a definição de grade de 32x32. Quando as linhas de grade são definidas, eo rato faz uma seleção através de uma grade, ele fica vermelho para mostrar precisão. Paint Shop Pro também oferece um recurso conhecido como "snap-to-grid" para a ferramenta de seleção, o que torna as seleções só é possível na grelha. Isso faz com que o movimento de seleção em incrementos de grade (que são 32 neste caso) e torna mais fácil a re-organizar os arquivos gráficos, incluindo tilesets. Google Search Snap-à-grade para esclarecimentos adicionais.
Gerenciamento de memória
Gerenciamento de memória deve ser a primeira coisa em consideração antes e durante o desenvolvimento de gráficos.
Quando a edição de gráficos existentes ou criar novos, para tentar evitar o espaço em branco, como um quadrado 32x32 todo em branco. Espaço em branco não inclui os poucos espaços ao redor de gráficos.
Problemas no passado
Na história da Konfuze motor (que é baseado fora Fonte Mirage) e motores Konfuze base, houve uma adição de recurso que permitiu que vários tilesets para ser carregado ao mesmo tempo, que foram todos carregados durante a inicialização. Se os desenvolvedores tinham 250MB de tilesets, que exigia que todos os jogadores tenham pelo menos 250MB de memória disponível para tilesets.
Quanto à Fonte Mirage actual 4, cada mapa pode conter apenas 1 tileset ao mesmo tempo, esta é uma forma de gerenciamento de memória. O editor de mapas permite a seleção do tileset.
Outras dicas
Sprites e itens devem ser otimizados de forma semelhante, para carregar apenas o que precisava ser desenhada na tela do jogo, e descarregado depois que não está sendo desenhado. Desde Mirage Sourcekeeps todos os sprites e itens na memória, isso pode resultar em erros de falta de memória para os usuários em máquinas low-end.
Adicionando gráficos
Adicionando Azulejo
Para adicionar mais tilesets, eles devem ser adicionados à pasta gfx e nomeado tiles1.bmp, tiles2.bmp, tiles3.bmp ...
O cliente irá contar o número de tilesets até o próximo arquivo não existe, não pule números.
Adicionando sprites
O formato sprites é composto por 12 quadros e parecem formar uma linha horizontal.
Adicionar i novos sprites no mesmo formato que as imagens de exemplo fornecido.
Adicionando Itens
Os itens consistem de apenas 1 frame, e parecem formar uma linha vertical.
Adicionar i novos itens no mesmo formato que as imagens de exemplo fornecido
Adicionando Magias
O formato de magias pode consistir de qualquer número de quadros, e parecem formar uma linha horizontal.
Adicionar i novas magias no mesmo formato que as imagens de exemplo fornecido.
Determinação de Dimensões
Dimensões - A altura ea largura de uma imagem.
Determinando Largura
Há um caminho simples para determinar a largura correta de sprites
12 frames * 32 pixels = 384
384 é a largura necessária para a sprites arquivo gráfico.
Determinação da altura (idade)
Há também uma maneira simples de determinar a altura correcta de sprites.bmp
N = número de sprites (indo verticalmente em 32 incrementos de pixel)
Height = N * 32
Se houver 5 sprites, a altura deve ser de 160, e da largura da imagem deve ser 384.
Determinar as dimensões dos itens
Um conceito semelhante se aplica a itens, a largura deve ser sempre 32, ea altura será N * 32.
Resultados Gráficos
Mirage Sourceuses DirectDraw7 e GDI para desenhar gráficos na tela do jogo.
DirectDraw
O DirectDraw é uma interface de software que fornece acesso direto para exibir os dispositivos, mantendo a compatibilidade com a interface dispositivo gráfico Windows (GDI). Não se trata de um alto nível de interface de programação de aplicativos (API) para gráficos.
DirectDraw avalia as capacidades do hardware de vídeo, fazendo uso de características especiais do hardware sempre que possível. Por exemplo, se sua placa de vídeo suporta blitting hardware, blits delegados DirectDraw para a placa de vídeo, aumentando consideravelmente o desempenho. Além disso, DirectDraw fornece uma camada de emulação de hardware (HEL) para dar suporte a recursos quando o hardware não.
DirectDraw existe no Windows, ganhando a vantagem de 32-bit de resolução e memória de um modelo de memória plana que fornece o sistema operativo. DirectDraw apresenta vídeo e memória de sistema como grandes blocos de armazenamento, não tão pequenos segmentos. Se você já usou segmento: offset endereçamento, você irá rapidamente começar a apreciar este modelo de memória "flat".
DirectDraw é usada para processar gráficos em aplicações onde a performance de topo é importante.
- Http://en.wikipedia.org/wiki/DirectDraw
Memória
Por padrão, DirectDraw cria uma superfície de exposição da memória, a menos que não se encaixam, caso em que cria a superfície na memória do sistema. Você pode escolher mostrar ou explicitamente a memória do sistema, incluindo o DDSCAPS_SYSTEMMEMORY ou DDSCAPS_VIDEOMEMORY bandeiras no membro dwCaps da estrutura DDSCAPS2. O método falhar, retornando um erro, se não pode criar a superfície no local especificado.
A superfície do primário deve usar a memória mostrar. Se DDSCAPS_VIDEOMEMORY é usado para inicializar o backbuffer, pode aumentar o desempenho, dependendo do hardware, caso contrário, pode paralisar o desempenho.
Primário superfície e Backbuffer
Quando a cena (frame) está sendo construído, tudo está sendo elaborado para o backbuffer, então o backbuffer é invertida, ou seja, a superfície primária e os lugares switch backbuffer. A superfície do primário é o que está sendo mostrada. Isso é necessário, caso contrário, o cenário pode ser visto visivelmente construído 1 peça de cada vez. Após as superfícies foram invertidas, o backbuffer estiver desmarcada, eo processo se repete.
Superfícies
DirectDraw7 pode armazenar bitmaps em qualquer memória do sistema ou exibir (vídeo) de memória no formato de um 'DirectDrawSurface7'. O DirectDraw é capaz de lidar com milhares de superfícies sem qualquer sobrecarga.
Clipper
A Clipper só é usado no modo com janelas, e é necessária para que ele possa interagir adequadamente com o Windows. Se um cortador for usado, quando uma janela vai sobre uma superfície, ele aparecerá na janela, em vez de desenho sobre ele.
Transparência (cor Keying)
Ao inicializar o DirectDraw, uma chave de cores é usado para definir a cor da máscara de um buffer. Quando um retângulo é blitted, ele tem a opção de usar a cor da máscara. Os pixels que combinam com a cor da máscara não será copiado para o buffer. Isto é usado para criar "irregular" imagens não retangulares, como sprites.
A estrutura abaixo é usado para descrever uma fonte ou chave cor destino ou espaço de cores. A chave de cores é especificado se os valores de gama baixa e alta são as mesmas.
Public Type DDCOLORKEY
Baixa como Long
Alto como Long
End Type
Baixo - baixo valor, inclusive, da gama de cores que está a ser utilizado como a chave de cores.
Alto - Alto valor, inclusive, da gama de cores que está a ser utilizado como a chave de cores.
A função RGB () pode ser usado para baixa e alta.
Blitting
Blitting é o processo de cópia de todo ou parte de uma superfície para outra superfície. A área que você deseja copiar é definida por um retângulo - você indica o canto superior esquerdo e canto inferior direito cantos.
Blt é o mais flexível e BltFast é 10% mais rápido, mas apenas se não houver blitter hardware.
Há cinco maneiras diferentes de blitting:
1. Blt destRect (As RECT, DDS, como DirectDrawSurface7, srcRect As RECT, bandeiras como CONST_DDBLTFLAGS) As Long
Este é o método mais seguro, mas é ligeiramente mais lento. Você deve informar a função do retângulo de destino e do retângulo de origem. Isso é útil, porque você pode aplicar as funções básicas de alongamento. ie. a fonte define um retângulo de tamanho 100x100, o retângulo destino é 200x200 - DirectDraw vai esticar a seção de 100x100 para caber uma seção de 200x200, basicamente dobrando o tamanho.
2. BltColorFill destRect (As RECT, fillvalue As Long) As Long
Esta função não é realmente uma cópia da imagem ou para qualquer lugar. Isso preenche a área do retângulo com uma cor.
3. BltFast dx (como DDS, Long, dy As Long As DirectDrawSurface7, srcRect As RECT, trans como CONST_DDBLTFASTFLAGS) As Long
Este método é utilizado a mais, simplesmente porque é mais rápido. Você não pode aplicar quaisquer transformações neste blit - copia o retângulo para o destino com o mesmo tamanho.
4. BltFx (destRect As RECT, DDS, como DirectDrawSurface7, srcRect As RECT, bandeiras como CONST_DDBLTFLAGS, BltFx Como DDBLTFX) As Long
Esta função é usada para aplicar as transformações à imagem, como alfa-mistura, espelhando, alongamento e muito mais. É muito semelhante à função BLT. (Slow, e hardware-dependente)
5. BltToDC (hdc As Long, srcRect As RECT, destRect As RECT)
Isto é para a interação entre os gráficos DirectDraw e funções do Windows. Se você já usou a API do Windows extensivamente então você vai ter usado DC superfícies em algum momento - este permite a cópia de uma superfície DirectDraw para a DC.
Alpha-Blending com vbDABL
vbDABL é escrito em C + + e ASM VB com os usuários em mente. Ele fornece um método alternativo de alfa-mistura em DirectDraw7, mas é limitado a 16-bit modo de profundidade de cor.
http://voodoovb.vbgamer.com/dd7vbdabl.html
http://directx4vb.vbgamer.com/DirectX4VB/Tutorials/DirectX7/DD_vbDABL.asp
Outros Links
Tutoriais para DirectX7 - http://directx4vb.vbgamer.com/DirectX4VB/TUT_DX7Start.asp
Leia os tutoriais DirectDraw para mais informações.
A ordem de partida sugerido ler: Fullscreen mode, modo de janela, desenho primitivos, texto de desenho, Tile Engines. Depois, sinta-se livre para explorar o resto.
http://echostorms.net/programming/vb6/
Arquivo de DirectX7 exemplos, Visual Basic 6 exemplos de codificação e Visual Basic 6 e-livros. Os e-books variam do básico ao nível de peritos.
DirectDraw7 / Direct3D Hybrid Engine - http://rookscape.com/vbgaming/tutBT.php
DirectDraw7 usando C + + tutorial, contém boas informações no topo da página
http://www.gamedev.net/reference/articles/article608.asp
Graphics Device Interface (GDI)
GDI é uma interface do Microsoft Windows para representar objectos gráficos e transmiti-las para dispositivos de saída, como monitores e impressoras.
(Mais informações - http://en.wikipedia.org/wiki/Graphics_Device_Interface)
A desvantagem da GDI é que ele não foi projetado para alta performance de software multimédia, foi feito para ser usado por aplicativos empresariais, como processadores de texto e planilha. GDI fornece acesso a um buffer de vídeo na memória do sistema, memória de vídeo não, e não aproveitar os recursos especiais que algumas placas de vídeo proporcionam. Em suma, a GDI é grande para a maioria das aplicações de negócios, mas o seu desempenho é muito lento para multimédia ou software do jogo.
Por outro lado, DirectDraw pode dar-lhe desenhar, que representam a memória de vídeo real. Isto significa que quando você usa o DirectDraw, você pode escrever diretamente para a memória na placa de vídeo, tornando suas rotinas de gráficos extremamente rápido. Estas superfícies são representados como blocos contíguos de memória, tornando mais fácil para realizar endereçamento dentro deles.
BitBlt
BitBlt GDI é uma operação, que é lento em comparação com o DirectDraw. Nas versões mais recentes do Mirage, todas as instâncias do BitBlt foram removidos e substituídos com a função DirectDraw BltToDC para uma melhoria na velocidade e memória.
(Mais informações - http://en.wikipedia.org/wiki/Bitblt)
GDI é usada muitas vezes no cliente de origem Mirage. Tudo o que não é blitted usando o DirectX está usando GDI.
Cada caixa de imagem contém um Device Context (DC), que de certa forma, é como um amortecedor de volta, mas não é o mesmo, isso torna possível para o DirectX para interagir com caixas de imagem usando BltToDC.
Blitting: GDI vs DirectDraw7
DirectDraw deve ser usado durante GDI sempre que possível, DirectDraw é muito mais rápido e pode ser otimizada para a eficiência da memória. Por exemplo, em vez de construir um inventário visual como um grande arrasta-box capaz de imagem contendo um conjunto de caixas de imagem usando BitBlt ou BltToDC na melhor das hipóteses. Um jogo de DirectX aparecerá mais como um jogo comercial.
Desenho de texto: GDI vs DirectDraw7
Ambos os GDI e DirectDraw tem funções internas para a elaboração de texto na tela. Ao usar o GDI para adicionar texto a um backbuffer, requer a superfície a ser bloqueado, e desbloqueado depois de todas as operações de desenho de texto completo são para o quadro atual. DirectX função de desenho de texto bloqueia e desbloqueia backbuffer superfície toda vez que ele é chamado, o que resulta em sobrecarga muito. Por sua vez, o DirectX função de desenho de texto oferece um pouco mais de flexibilidade.
GDI vs Direct3D
Aplicativos Direct3D coexistir com aplicações GDI e ambos têm acesso ao hardware gráfico através do driver de dispositivo para a placa gráfica. Ao contrário do GDI, Direct3D pode tirar proveito dos recursos de hardware quando um dispositivo HAL está selecionada. HAL fornecer dispositivos de aceleração de hardware baseado no conjunto de recursos suportados pela placa gráfica.
Problemas / Questões
Configuração de ppp
Se o cliente foi desenvolvida usando tamanho normal (96 ppp), todos os usuários também devem ter o seu sistema de configuração de DPI para igualá-la. Os usuários com um menor ou maior dimensão terão problemas com alguma distorção desenho GDI.
Para alterar a configuração de DPI, usando o Windows XP, o botão direito do mouse no desktop, Propriedades -> guia Configurações, botão Avançadas -> Separador Geral, DPI Setting
Servidor
Hospedagem
Se possível, use uma máquina de hospedagem que pode ser dedicado apenas para hospedagem, e nunca é usada de outra forma.
Memória
Quando o servidor é inicializado, ele carrega todas mapa, npc, fazer compras, e magia de dados em memória. A máquina que hospeda o servidor deve ter memória suficiente para todos os dados. A máquina também vai precisar de mais memória RAM para outras operações que podem utilizar a memória. Se a memória é um problema, tente fechar todos os outros programas que não sejam necessários para executar o sistema operacional.
Uso de CPU
Uso da CPU é feita principalmente por quantos mapas ativos (jogadores com mapas sobre elas), existem, e quantos jogadores estão jogando ativamente. Definir a prioridade alta ou AboveNormal pode resultar em um aumento de desempenho do aplicativo de servidor, mas pode causar o sistema para lag.
Bandwidth
Evite a utilização de máquinas ligados a roteadores, conexões sem fio, ou está conectado a qualquer coisa que partes de largura de banda ou latência aumenta.
Rede
O servidor se comunica com os clientes usando pacotes String.
Pacotes String
String pacotes são lentos e os lotes utilizar largura de banda.
Tamanhos de pacote pode ser determinada por ..
6 + Len (string) * 2 bytes
String é o pacote
Len retorna o número de caracteres dentro da cadeia
Envio e análise de pacotes String
Pacotes de dados Mapa tem um sistema de cache, sua finalidade é a pré-compilação dos pacotes de cadeia. Todos os outros pacotes são construídos imediatamente antes do envio, que é um tempo de operação dispendiosa. Para reduzir a largura de banda, os mapas podem ser embalados com o cliente e com atualizações, para evitar o envio de pacotes de dados grande mapa sobre a rede. Depois que o cliente ou servidor recebe um pacote, ele deve então analisá-lo em uma matriz de seqüências através da divisão da seqüência de pacotes por SEP_CHAR
No cliente, na África Sub HandleData, ele contém o código
Dim Parse () As String
Parse = Split (dados, SEP_CHAR)
Os dados são os pacotes String, ea função Split separa as partes da cadeia de SEP_CHAR no Parse () array.
Aqui está um exemplo de análise de um pacote
O primeiro elemento da Parse () matriz é "spawnitem"
A matriz é 0 indexada, tão Parse (0) contém a string "spawnitem"
'Este é o método antigo
Select Case Parse (0)
Processo packetName "
'...
"Analisar o pacote
'Fazer alguma coisa
Processo spawnitem "
n = Val (Parse (1))
MapItem (n). Num = Val (Parse (2))
MapItem (n). Value = Val (Parse (3))
MapItem (n). Dur = Val (Parse (4))
MapItem (n). X = Val (Parse (5))
MapItem (n). Y = Val (Parse (6))
A função Val retorna um número de uma seqüência, as variáveis estão sendo atribuído por acessar os elementos da matriz de Parse.
No lado do servidor, a parte do código que envia o pacote
Packet = "spawnitem" & SEP_CHAR & i & & SEP_CHAR itemNum & SEP_CHAR & ItemVal & SEP_CHAR & MapItem (MapNum, I). Dur SEP_CHAR & & & SEP_CHAR X & Y & END_CHAR
Call SendDataToMap (MapNum, Packet)
O SendDataToMap Sub envia o pacote para cada jogador no mapa.
Problemas / Questões
Utilizando MsgBox, avisos, e modal nada congela a thread de execução. O NPC irá parar o processamento, eo servidor irá parar de enviar pacotes até que o evento é tratado. Isso também permite aos menus (construído a partir do menu Editor).
DirectDraw Glossário
buffer de fundo - uma superfície à qual nonvisible bitmaps e outras imagens podem ser tiradas enquanto o primário superfície exibe a imagem visível no momento.
blit - A transferência de blocos de bits.
verificação de limites - O processo de verificação de que uma imagem na tela é exibido dentro dos limites da tela.
Clipper - Um objeto DirectDrawClipper.
detecção de colisão - O processo de determinar se os pixels de duas imagens de compartilhar o mesmo local na tela.
chave de cores - um valor que indica a cor a ser utilizada para efeitos transparentes ou translúcidas. Por exemplo, ao usar um hardware blitter, todos os pixels de uma área retangular são blitted, exceto o valor que foi definido como a chave de cores, o que cria sprites não retangular sobre uma superfície.
chave destino cor - a cor que (no caso de blitting) é substituído ou (no caso de sobreposições) é coberto na superfície de destino.
janela do dispositivo - A janela da aplicação visível de que a Microsoft (R) DirectDraw (r) utiliza para mostrar. Aplicações podem ter um dispositivo para cada dispositivo de vídeo ligado a um determinado computador.
Flip - O processo de trocar os endereços associados com as costas e os amortecedores da frente. Esta swaps efetivamente a imagem no buffer de volta para o buffer de frente, assim, a exibição da imagem.
lançando cadeia - Uma série de superfícies ligados um ao outro que pode ser invertida.
lançando superfície - Qualquer pedaço de memória que pode ser invertida.
janela de foco - Uma janela de aplicação, visíveis ou não visíveis, que usa o DirectDraw para ligar a janela. O manipulador de janela foco de mensagem de entrada recebe mensagens transmitidas pelos DirectDraw. Os aplicativos podem ter apenas uma janela de foco. Veja também a janela do dispositivo.
amortecedor dianteiro - amortecedor O primeiro de uma cadeia de inversão. Em muitos casos, esta é a superfície visível primário Em outros casos (como uma cadeia lançando de texturas) o buffer de frente é a superfície que o motor 3-D recebe a textura, mas não o primário superfície, mas não é exibido. No caso de inversão de sobreposição superfícies, o amortecedor dianteiro é exibido, mas é apenas uma superfície coberta na superfície primária. Consulte também superfície primária.
HAL - A camada de abstração de hardware. Consiste de hardware e mecanismos de driver de dispositivo que isolar as aplicações dos detalhes da implementação do dispositivo específico. Se um recurso solicitado por um aplicativo não é executado pelo hardware atual, a capacidade é emulado pelo software.
blitter hardware - Um componente de hardware, embutido no adaptador de vídeo, que realiza operações blit eficiente.
HEL - A camada de emulação de hardware. Fornece baseado em software de emulação de características que não estão presentes no hardware.
fora da superfície da tela - Uma área retangular conceitualmente na memória que geralmente é usado para armazenar bitmaps ser blitted para um buffer de fundo antes de serem exibidos. Comumente usado para armazenar sprites.
superfície primária - A área de memória que contém a imagem a ser exibida no monitor. Em DirectX, o primário superfície é representado pelo objeto DirectDraw principal.
chave da fonte de cor - A cor que (no caso de blitting) não é copiada, ou (no caso de sobreposições) não visível, o destino.
alongamento - Blitting uma imagem em um destino com dimensões diferentes. Esta operação é suportada directamente por algum hardware.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|