Habbo Hc Fórum

olá se não registrado por favor se registre!!!

e tenha todo conteúdo

Participe do fórum, é rápido e fácil

Habbo Hc Fórum

olá se não registrado por favor se registre!!!

e tenha todo conteúdo

Habbo Hc Fórum

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

O melhor forúm o melhor conteúdo

Últimos assuntos

» floods para admin
MMO Construindo Mundos Virtuais EmptyTer Nov 15, 2011 7:22 pm por Admin

» Lobby CMS Basead In Sulkea + 2 EMU + DB
MMO Construindo Mundos Virtuais EmptySáb Jan 29, 2011 6:34 pm por PowerAge

» Vagas
MMO Construindo Mundos Virtuais EmptyQui Jan 27, 2011 7:56 pm por PowerAge

» Stage CMS v1
MMO Construindo Mundos Virtuais EmptySáb Jan 22, 2011 11:40 am por PowerAge

» Loader Dysket Hotel !! o meuu !
MMO Construindo Mundos Virtuais EmptySex Dez 10, 2010 6:53 pm por RafaelVV

» [Down]Habbocms 6.8 U Traduzido Pt-BR
MMO Construindo Mundos Virtuais EmptyTer Dez 07, 2010 1:48 pm por combi756

» [Stable] Ubercms + Uberemu r54 :commands !
MMO Construindo Mundos Virtuais EmptySeg Nov 22, 2010 12:41 pm por Mjkayo

» Criando Seu Proprio Client 8.54 - Completo E Facil
MMO Construindo Mundos Virtuais EmptySeg Nov 22, 2010 12:30 pm por Mjkayo

» [Addon] Nova Barra de Ferramentas Para o me.php
MMO Construindo Mundos Virtuais EmptySáb Nov 20, 2010 4:22 pm por Mjkayo

» [Loja] Floods
MMO Construindo Mundos Virtuais EmptySáb Nov 20, 2010 12:22 am por Mjkayo

»  Empreendedor mirim de 16 anos faz seu primeiro milhão de dólar com sua primeira empresa
MMO Construindo Mundos Virtuais EmptySex Nov 19, 2010 8:17 pm por Admin

» loader retro com vip
MMO Construindo Mundos Virtuais EmptySex Nov 19, 2010 7:25 pm por Admin

» HoggoEmulador R1 V55
MMO Construindo Mundos Virtuais EmptyQui Set 09, 2010 1:01 pm por Ϟ User

» Ajudo
MMO Construindo Mundos Virtuais EmptyQui Set 09, 2010 12:54 pm por Ϟ User

» Anuncie Aqui
MMO Construindo Mundos Virtuais EmptyQui Ago 19, 2010 10:32 pm por Admin

Palavras-chaves

Top dos mais postadores


    MMO Construindo Mundos Virtuais

    Admin
    Admin
    Administrador
    Administrador


    Masculino Mensagens Mensagens : 671
    Moedas Moedas : 30009
    Reputação Reputação : 1
    Data de inscrição : 19/11/2008
    Idade : 29
    Localização : na frente do pc!

    MMO Construindo Mundos Virtuais Empty MMO Construindo Mundos Virtuais

    Mensagem por Admin Seg Jun 28, 2010 5:27 pm

    Neste artigo vamos discutir a arquitetura de um MMO * () do mundo virtual com as ferramentas de comunidade típico (avatar chat, listas de amigos, fazer compras, jogos, ferramentas de negociação, etc ..) encontrados em aplicações deste género. (Penguin Club Hotel Habbo, Mokitown, ...)

    Vamos dar uma olhada em profundidade o cliente (Flash / Flex) e servidor (SmartFoxServer) os lados do projecto e vamos discutir as melhores abordagens para tornar a aplicação facilmente extensível e gerenciável.

    (*) = Massive Multiplayer Online (Comunidade jogo / RPG)
    Há literalmente dezenas de siglas que definem os vários gêneros de MMOs (MMOG, MMOC, MMORPG, MMOFPS ...)

    »Um pouco de história
    Nos últimos 2-3 anos temos visto um crescimento notável de MMO baseado em Flash Comunidades inspirado por sites populares como o Habbo Hotel, Mokitown e similares mundos virtuais. [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    A idéia por trás dessas aplicações é a criação de um mundo altamente interativo onde os usuários não só podem se reunir e conversar juntos, mas também criar seus próprios personalizável "espaços" (salas, apartamentos, casas), jogar jogos on-line (single e multi player), publicar e trocar fotos e muito mais.


    Nos primeiros dias MMO comunidades eram essencialmente baseadas em "clientes grosso" (executáveis dependentes da plataforma, normalmente apenas para Windows) que os usuários tinham que baixar as suas unidades locais, instalar e executar.

    No início de 2000 estavam experimentando várias partidas com tecnologias como Java e Shockwave para criar aplicações semelhantes e executá-los em um navegador, tornando-se possível chegar a um público mais vasto e reduzir as dependências de software em um único plugin para o navegador.
    Entre os primeiros experimentos foram DeviousMUD que mais tarde foi rebatizado RuneScape e Habbo Hotel.

    Ambos os MMOGs rapidamente se tornou extremamente popular, com milhões de usuários registrados em todo o mundo.
    Essa experiência inspirou muitas outras companhias de pesquisa e experiência com tecnologias semelhantes, inclusive os emergentes flash de Macromedia (hoje Adobe Flash).

    Back in Flash 2001-2002 foi rapidamente ganhando popularidade, mas foi perdendo o poder de processamento mesmo dos seus concorrentes (esses eram os dias de Flash 5 e Flash MX). Além disso Shockwave tinha uma tecnologia de servidor dedicado fornecido pela Macromedia (Shockwave Multiuser Server), que ajudou a simplificar o desenvolvimento e implantação de MMOGs online.

    Em poucos anos algumas coisas têm evoluído muito rapidamente e Flash é hoje a principal plataforma para qualquer tipo de aplicações baseadas no navegador e jogos, incluindo MMOGs. A velocidade de renderização melhorou dramaticamente com o lançamento da versão 9 do Flash Player e do Actionscript 3.0 idiomas fornece uma plataforma sólida para a construção de qualquer tipo de objeto de código orientado.

    A partir de hoje (Fevereiro de 2009) mais recente do Flash Player (versão 10) está disponível para todos os 3 principais sistemas operacionais (Windows, MacOS X e Linux x86) fornecer uma máquina de re-escrita virtual com novas funcionalidades como a compilação JIT, suporte para binários soquetes, display quadro avançado de programação e suporte a vídeo.



    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]







    »A ideia: VirtuaPark


    A fim de ilustrar a arquitetura por trás de um pedido semelhante, vamos analisar o projeto de "VirtuaPark", um MMO de ficção dirigido pela comunidade com avatares personalizados interagindo em ambientes 3D, como (isométrica), online e offline do sistema de mensagens, sistema de compras e vários multi- jogador jogos onde os usuários podem desafiar uns aos outros.

    Um dos requisitos é crucial para VirtuaPark extensibilidade: Gostaríamos que o projeto seja aberto a novos recursos (novos módulos, jogos, etc ..), sem maiores transtornos, de forma que novos componentes podem ser facilmente conectado à base de código existente.

    O pedido será de 100%, com base navegador, usando última versão do Flash Player.
    Nos bastidores SmartFoxServer PRO e um banco de dados MySQL vai fazer o trabalho duro para manter online e todos sincronizados ao interagir, conversar, brincar, etc ..

    O diagrama abaixo mostra como os módulos de aplicativos são organizados:

    Foram definidas quatro grandes "módulos" que permitirá ao usuário acessar todos os recursos disponíveis:
    Menu Principal. Apresenta uma lista de todas as "ferramentas" e "jogos" disponíveis. Ao clicar em um desses itens a ferramenta / jogo será lançado.
    Painel de controle. Um painel de abas com os seguintes comandos:
    Chat History (a transcrição de todas as mensagens de chat)
    Room List (lista de salas / locais disponíveis)
    User List (lista de usuários disponíveis no local atual)
    Meus amigos (a lista de contatos com seus online / offline status)
    Chat Barra de Mensagens. A barra de controle simples, onde os usuários podem digitar suas mensagens de chat com ferramentas para personalizar o texto e adicionar smilies
    Avatar Chat. A área mais importante da aplicação, onde o avatar do bate-papo e jogos multiplayer estará funcionando. O Chat Avatar terá uma vista isométrica scrollable no estilo do Habbo, etc. Quando um jogo é lançado o bate-papo será escondido eo jogo irá tomar o seu lugar.

    Cada módulo do aplicativo será responsável pelo tratamento de uma função específica (personalização de avatares, jogos, lista de usuário, etc ..) e será capaz de enviar e receber eventos dos outros. Para dar uma idéia da comunicação entre os módulos de seleção neste exemplo:
    o usuário clica em Customize Avatar no menu principal
    a ferramenta é carregado e lançado em uma nova janela dentro do aplicativo
    o usuário modifica a aparência do seu personagem e se compromete a mudança
    a ferramenta envia um pedido para que SmartFoxServer em lojas de transformar o novo perfil do banco de dados e dispara um evento de volta para o módulo Chat Avatar de modo que todo mundo está atualizado.

    Nota lateral:

    Criar um motor de telha baseada isométrica para um bate-papo Avatar não é trivial e pode levar vários meses de trabalho árduo para construí-lo e integrá-lo com o servidor. Além disso, um nível editor é normalmente necessário para construir o chat locais, acrescentando mais horas de desenvolvimento.
    Devido a isso, temos investido mais de 15 meses de investigação e desenvolvimento para criar uma poderosa e flexível Avatar motor de bate-papo que se integra com SmartFoxServer fora da caixa.

    O produto é chamado Openspace e sugerimos dar uma olhada no site e fazer o download do julgamento, que poderia salvar os seus custos de desenvolvimento e tempo diferentes ordens de magnitude.

    »Shell aplicação baseada em


    [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

    O módulo Shell vai ter um monte de responsabilidades:
    Configuração. Ele irá carregar o arquivo de configuração do aplicativo principal e que vai torná-lo disponível a todos os outros módulos.
    Módulo de carga / descarga. Ele irá carregar e ativar os outros módulos, quando a aplicação é iniciada, o lançamento de ferramentas adicionais e descarregar aqueles que não são mais necessários.
    compartilhamento de conexão. O reservatório será responsável pela conexão com o servidor de soquete e compartilhar a conexão entre todos os outros componentes. Cada módulo será então responsável pelo registro dos eventos que eles precisam ouvir.
    gestão da interface do usuário. Ele vai gerir caixas de diálogo e mensagens de erro que vem do servidor e que deve ser exibido no topo de todos os outros módulos. Ele também pode ativar / desativar os módulos, no caso de uma mensagem importante ou um erro deve parar a interação com o aplicativo.
    Suporte multi-idioma. O shell irá carregar dinamicamente dados linguagem externa de um banco de dados ou arquivo XML e preencher todos os componentes GUI (etiquetas, botões, listas, formulários, etc ..) em conformidade. Desta forma, poderemos também manipular as páginas de ajuda localizada, mensagens de erro e até moedas.


    A fim de desenvolver a Shell e seus módulos você terá um bom leque de opções desde SmartFoxServer suporta tanto o Actionscript 2.0 (a partir do Flash 6-Cool e Actionscript 3.0 (Flash Player 9, usando o Flash CS3 e Flex Builder 2).
    Se você estiver planejando usar o AS 2.0, nós também recomendam verificar a SmartFoxBits, um conjunto completo de componentes de interface do usuário que pode acelerar drasticamente o processo de criação de lobbies, aplicativos de bate-papo, etc ..

    »Arquitetura do lado do servidor

    Agora que temos definida a estrutura da parte do lado do cliente, você provavelmente estão se perguntando o que vai acontecer no lado do servidor: como você vai lidar com as muitas solicitações que possível, como você está indo para gerir activos, persistência, etc ..
    Antes de saltar para os detalhes técnicos da extensão do lado do servidor, seria melhor se examinarmos os componentes que iremos usar no backend.

    Novamente um diagrama é provavelmente vale uma centena de palavras


    [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

    Começando de baixo para cima, temos o cliente que se conecta através de seu navegador para o nosso site VirtuaPark. O site em conjunto com todos os arquivos SWF e de outros bens podem ser confortavelmente manipuladas pelo servidor web Jetty embutido SmartFoxServer.
    Com o servidor embutido você pode facilmente servir conteúdo estático e criar páginas web dinâmicas usando Java regular servlets / JSP ou com a ajuda de um intérprete Python integrado, para acelerar o processo.

    O Side Extension Server irá lidar com todos os pedidos provenientes de cada módulo, avatar chat e jogos, mais ele vai acessar o servidor de banco de dados para armazenar e recuperar os dados do usuário, status da aplicação e outros enfeites.
    Neste cenário especial, uma ferramenta de ORM é altamente recomendado para ajudar a simplificar o acesso aos dados persistentes e tornar seu servidor mais fácil de codificação. Hibernate e iBatis é provavelmente o mais popular no mundo do Java, mas existem muitos outros que você pode verificar.

    Outro aspecto importante das ferramentas de ORM é que eles fornecem uma camada de abstração entre a lógica do aplicativo eo servidor de banco de dados real, tornando o seu código de extensão independente da tecnologia DB. Se, por qualquer razão que você precisa para migrar de uma tecnologia de banco de dados para um outro que será muito simples de executar o interruptor e seu código não será afetado.

    SmartFoxServer permite aos desenvolvedores integrar facilmente com ferramentas como extensões de Java e extensões de script (Actionscript e Python). Se você planeja usar o último que você vai ser capaz de acessar diretamente todos os objetos ORM partir dos seus scripts sem a necessidade de escrever código Java adicional.

    Para dar uma idéia de quão poderosa é a mistura de linguagens de scripting (Python, neste caso) com um ORM como o Hibernate está aqui um trecho de código que mostra um método de autenticação simples que recupera um usuário do banco de dados e acesso à algumas de suas propriedades :


    [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

    Começando de baixo para cima, temos o cliente que se conecta através de seu navegador para o nosso site VirtuaPark. O site em conjunto com todos os arquivos SWF e de outros bens podem ser confortavelmente manipuladas pelo servidor web Jetty embutido SmartFoxServer.
    Com o servidor embutido você pode facilmente servir conteúdo estático e criar páginas web dinâmicas usando Java regular servlets / JSP ou com a ajuda de um intérprete Python integrado, para acelerar o processo.

    O Side Extension Server irá lidar com todos os pedidos provenientes de cada módulo, avatar chat e jogos, mais ele vai acessar o servidor de banco de dados para armazenar e recuperar os dados do usuário, status da aplicação e outros enfeites.
    Neste cenário especial, uma ferramenta de ORM é altamente recomendado para ajudar a simplificar o acesso aos dados persistentes e tornar seu servidor mais fácil de codificação. Hibernate e iBatis é provavelmente o mais popular no mundo do Java, mas existem muitos outros que você pode verificar.

    Outro aspecto importante das ferramentas de ORM é que eles fornecem uma camada de abstração entre a lógica do aplicativo eo servidor de banco de dados real, tornando o seu código de extensão independente da tecnologia DB. Se, por qualquer razão que você precisa para migrar de uma tecnologia de banco de dados para um outro que será muito simples de executar o interruptor e seu código não será afetado.

    SmartFoxServer permite aos desenvolvedores integrar facilmente com ferramentas como extensões de Java e extensões de script (Actionscript e Python). Se você planeja usar o último que você vai ser capaz de acessar diretamente todos os objetos ORM partir dos seus scripts sem a necessidade de escrever código Java adicional.

    Para dar uma idéia de quão poderosa é a mistura de linguagens de scripting (Python, neste caso) com um ORM como o Hibernate está aqui um trecho de código que mostra um método de autenticação simples que recupera um usuário do banco de dados e acesso à algumas de suas propriedades :
    sessão = HibernateFactory.openSession ()
    session.beginTransaction tx = ()

    session.createQuery q = ("do usuário, onde apelido = apelido: e pass =: pass")
    q.setParameter (nick ", nick)
    q.setParameter ("pass", pwd)
    res = q.list ()

    # Se o registro foi encontrado ...
    se res.size ()> = 1:

    # Obter o registro
    user = res.get (0)

    type = user.getMemberType ()
    user.getGender bobba = ()

    ...
    ...

    Hibernate permite-lhe consultar os objetos no banco de dados usando uma linguagem SQL-like chamado HQL. Como você pode ver em vez de escrever longas instruções SQL só precisamos especificar os critérios para nossa busca. Uma vez que o objeto é recuperado podemos acessar todos os seus domínios (incluindo aqueles que são mapeadas em tabelas vinculadas) com simples getters e setters.



    »A extensão do lado do servidor

    O Extension Server é o núcleo do pedido e, provavelmente, a parte mais complexa para construir. Como já descrito nos diagramas anteriores, será executado VirtuaPark em sua própria zona e usar uma única extensão ligado a Zona de nível.

    (Se você não estiver familiarizado com o básico do quadro SmartFoxServer sugerimos que você fazer uma pausa na leitura e revisão de artigos encontrados no Capítulo 4 da nossa documentação).

    O primeiro problema que temos de enfrentar quando a construção da extensão é como organizar as muitas solicitações que cada módulo do lado do cliente pode enviar para o servidor.
    Uma solução eficiente para o nosso problema está organizando a extensão de servidor em módulos, assim, como nós fizemos no cliente, e fazê-los lidar com os pedidos específicos provenientes de cada módulo do lado do cliente. (Módulo de chat, o módulo Shop, Game módulo, etc ..)

    O seguinte é uma representação visual da solução:



    [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]


    Como você pode ver no diagrama, a extensão de arquivo principal irá atuar como um distribuidor para os outros módulos, que são classes essencialmente personalizado projetado para lidar com os pedidos dos módulos de cliente.

    Para que este mecanismo funcione, precisamos de estabelecer uma convenção de nomeação entre cliente e servidor de nomes pedido. Como você pode lembrar de cada mensagem enviada e Extensão recebidos pelo servidor tem uma propriedade cmd que identifica o comando (pedido) nome.

    Para o nosso VirtuaPark iremos utilizar a seguinte convenção:

    moduleName##requestName

    onde:
    moduleName: é o nome do módulo de destino
    # #: O separador
    requestName: o nome do pedido para o módulo de destino

    Aqui estão alguns exemplos de pedidos com base na Convenção acima:

    chat # # moveAvatar
    Perfil # # storeData
    # # loja buyItem

    O seguinte exemplo de código Python deve esclarecer todo o processo:
    Código:
    ChatModule classe (objeto):
    def handleReq (self, cmd, params, que, roomId):
    print "Manipulação Chat Request", cmd

    ShopModule classe (objeto):
    def handleReq (self, cmd, params, que, roomId):
    print "Manipulação Shop Request", cmd

    GameModule classe (objeto):
    def handleReq (self, cmd, params, que, roomId):
    print "Pedido de tratamento de caça:" cmd


    handlersTable = ()

    def init ():
    global handlersTable

    print "Inicializar"

    # Módulos Instantiate
    chatModule ChatModule = ()
    shopModule ShopModule = ()
    gameModule GameModule = ()

    # Adicione os módulos para os manipuladores de mesa
    [HandlersTable "chat"] = chatModule
    handlersTable [shop "] = shopModule
    handlersTable [game "] = gameModule


    def destroy ():
    print "Parar"

    #
    solicitações do cliente # Handle
    #
    HandleRequest def (cmd, params, que, roomId, protocolo):
    separatorPosition = ("##") cmd.find

    # Olhe para o separador
    se separatorPosition> -1:
    moduleName cmd = [0]: separatorPosition
    reqname = cmd [separatorPosition + 2]:

    # Obter o módulo manipulador e passar parâmetros do pedido
    se moduleName handlersTable.has_key ():
    handler = handlersTable [moduleName]
    handler.handleRequest (reqname, params, que, roomId)

    else:
    print "módulo desconhecido", moduleName

    else:
    print "solicitação inválida", cmd

    #
    eventos do servidor # Handle
    #
    handleInternalEvent def (evt):
    passar


    Foram definidas três classes simples (ChatModule, ShopModule e GameModule) que representam o módulo de chat, módulo de loja e um módulo de jogo, respectivamente. Cada turma tem um método handleReq que será chamado pela extensão de arquivo principal.

    No método init () da nossa extensão que instanciar todas as três classes e nós adicioná-los a um dicionário global chamado handlersTable. (Um dicionário em Python é o equivalente a uma matriz associativa / HashMap)

    Quando uma solicitação do cliente é recebido pelo HandleRequest () método, vamos fazer o seguinte:
    Procure o separador # #
    Dividir a string cmd no nome do módulo eo nome pedido (lembre-se que a convenção estabelecida?)
    Verifique se o módulo quis existe no handlersTable
    Finalmente envio do pedido para o módulo


    Se você preferir usar o Java para as extensões que você deve ser capaz de recriar a estrutura do mesmo código, definindo uma interface que todas as classes módulo irá implementar.
    public interface ModuleRequestHandler
    Código:
    (
    public void init ();
    pública destruir (void);
    HandleRequest public void (String cmd, params JSONObject, o usuário do usuário, roomId int);
    )

    Um dos grandes desafios na criação de multi-usuários de mundos virtuais é criar uma infra-estrutura escalável lado servidor que permite ao sistema manter-se com o aumento do tráfego e popularidade do pedido. Esses projetos costumam começar relativamente pequena, oferecendo assinaturas gratuitas para os usuários para que possam avaliá-la e decidir se querem se tornar membros registados. Nesta fase, o número de usuários simultâneos bater a aplicação geralmente varia de algumas centenas a alguns milhares, de modo que o investimento em recursos de hardware não é particularmente oneroso: um par de máquinas de alta specced iria suportar a carga sem problemas.

    Assim como a palavra é espalhar banners e campanhas são lançadas, mais e mais usuários irão se inscrever em ambos gratuitos e pagos associações e podemos descobrir que a configuração atual de hardware está faltando cavalos de potência.

    Existem várias opções para a construção de um backend escalável, nós estamos indo para ilustrar algumas delas destacando os prós e contras de cada solução:

    Clustering:

    "Um cluster de computadores é um conjunto de computadores fortemente acoplados que trabalham em estreita colaboração para que, em muitos aspectos, eles podem ser vistos como se fossem um único computador. Os componentes de um cluster são geralmente, mas nem sempre, ligadas entre si através de rápido redes de área local. Clusters são normalmente utilizados para melhorar o desempenho e / ou sobre a disponibilidade oferecida por um único computador, enquanto que normalmente a ser muito mais rentável que um único computador da velocidade comparável ou disponibilidade. " (Da Wikipedia)

    SmartFoxServer oferece opções diferentes para executar seus aplicativos em vários servidores:
    Você pode executar várias instâncias do servidor em paralelo, dividindo o seu mundo virtual em regiões e que cada um deles tratado por uma ou mais máquinas. Com essa técnica, você pode criar MMOs grandes e sistemas de jogos em uma fração do custo de um sistema "tradicional" cluster.

    O único inconveniente é que cada servidor corre isolado dos outros por isso, se você precisa compartilhar dados entre várias instâncias que você terá que usar um banco de dados central que poderia se tornar um gargalo.

    Você pode integrar terracota com você extensões do lado do servidor para criar um altamente disponíveis e escaláveis de serviço com nenhum ponto único de falha. Em maio de 2008, lançado oficialmente em uma profundidade de papel branco que ilustra como criar um cluster para SmartFoxServer MMOs grandes e sistemas de jogo on-line.

    Terracotta é atualmente a tecnologia de ponta para o agrupamento do Java Virtual Machine, opera nos bastidores a nível do código-byte, fornecendo escalabilidade e resistência sem precedentes fail-over.

    Do ponto de vista económico a integração de terracota com SmartFoxServer torna possível a criação de grandes sistemas de jogos distribuídos em uma fração do custo das soluções tradicionais (com base em caches e bases de dados caro).


    instâncias paralelas:

    Uma alternativa para aumentar a escalabilidade do servidor socket é executar várias instâncias paralelas. Ao dividir o mundo virtual em regiões que podemos fazer com que cada instância de lidar com uma parte do mundo e compartilhar os dados comum no servidor de banco de dados em cluster, que estará disponível para todas as regiões.

    Usando esta técnica, o balanceamento de carga é delegada para o aplicativo cliente: o cliente quer escolher automaticamente o servidor direito com base no tráfego actual, ou apresentar uma lista de servidores para o usuário permitindo que ele escolha o destino.

    O diagrama abaixo ilustra a arquitetura de servidor final do nosso projecto VirtuaPark fictício:


    [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

    Web Server: já que a maioria das chamadas do lado do servidor será direcionado para a extensão SmartFoxServer, incluindo o registro de usuário, senha recuperação, etc .., que provavelmente será capaz de lidar com todo o tráfego web com uma única máquina servidor web. Além disso, a fim de evitar um ponto único de falha, a gente pode querer manter uma máquina espelho de reposição no caso de o servidor web vai para baixo.

    SmartFoxServer: cada instância irá correr em alta-spec dual-core, máquina de CPU dual capaz de lidar, pelo menos, 8-14,000 usuários (o que inclui bate-papos, mensagens instantâneas, jogos multiplayer, etc ..) para uma total de 40.000 ou mais utilizadores em simultâneo.

    Banco de dados do servidor: o banco de dados irá processar as solicitações provenientes de todas as instâncias região. Por esta razão, decidimos usar a solução de cluster, a fim de garantir a melhor disponibilidade do serviço.

    (Você pode ler mais sobre o desempenho ea escalabilidade neste faq)



    »Protegendo o Mundo Virtual

    Vimos que MMOGs são bastante complexas aplicações baseadas em tecnologias de servidor diferentes, e para cada um deles, poderíamos escrever um livro inteiro que investiga questões de segurança específicas. Desde que este artigo está centrado em torno da tecnologia SmartFoxServer vamos dar uma olhada em algumas técnicas de bom senso e as melhores práticas para reduzir a quantidade de hacking ao mínimo possível.
    ferramentas de segurança básica: SmartFoxServer vem com um conjunto básico de ferramentas de segurança que pode ser configurado para evitar tentativas de hacking como típico de conexão e inundação de mensagem. Para evitar esses problemas nós fornecemos filtros anti-inundação e um filtro de IP que impede muitas conexões a partir de um único endereço IP. Além disso, o servidor é extremamente paranóico com soquetes conectados que não realizar um pedido de login. Essas conexões não podem interagir com o servidor e eles são desligados depois de um período de tempo configurável.

    pedidos Server pública: SmartFoxServer expõe uma série de comandos público que qualquer cliente pode invocar o servidor, desde que fez o sucesso Entre os pedidos que temos: O pedido de login, junte-se pedido, públicas e privadas mensagens, etc .. Todos estes comandos são muito público validadas pelo servidor para evitar mal-intencionados e os pedidos podem ser inibidos através do arquivo de configuração, para evitar pedidos indesejados. Você pode saber mais sobre como desabilitar os pedidos do público aqui

    Lógica do lado do servidor: é vital que toda a lógica da aplicação é mantido no lado do servidor, como o cliente Flash pode ser facilmente modificado e engenharia reversa para realizar chamadas maliciosas. Além disso, você deve ser paranóico com cada solicitação do cliente e fortemente validá-los, especialmente em jogos prêmio baseado em transações que envolvem dinheiro e informações similares ...

    Dinheiro / operações Prémio: se você rodar jogos baseados em prêmio (seja dinheiro, bens, serviços, etc ..) você certamente vai atrair o interesse de hackers. A fim de alcançar a melhor segurança que você deve executar transações entre SmartFoxServer seu prêmio e um externo com SSL de servidor web. Dessa forma, a comunicação acontece entre os dois servidores, escondido dos olhos indiscretos e através de um protocolo altamente seguro.

    Cliente endurecimento lado: desde que os arquivos SWF são facilmente engenharia reversa com um decompiler, é crucial para tornar a vida do hacker wannabe-o mais difícil possível. Provavelmente não é uma solução perfeita para proteger completamente o aplicativo cliente, mas você pode conseguir bons resultados o suficiente, combinando diversas técnicas:

    Faça o seu código modular e torná-la carga diferentes partes externas. Também tentar ofuscar as cordas de nome de arquivo dentro de arquivos SWF.

    Se você estiver carregando dados externos XML contendo informações sigilosas sobre os recursos de aplicativo, criptografá-la.

    Use um obfuscator de código: o código fonte compilado ficará extremamente difícil de ler e compreender.

    Use a diretiva de domínio cruzado arquivo para parar de domínios indesejados. Se alguém rouba o seu aplicativo cliente e tenta carregar uma versão hackeada em outro site, a conexão com os servidores será recusada.

    Com as últimas Actionscript 3.0 você pode transferir arquivos swf inteiro como matrizes de bytes através do socket. Ao fazer isso você vai pular o cache do navegador e torná-lo muito difícil de capturar.




    »Dicas e ferramentas de desenvolvimento


    Agora que analisamos a arquitetura cliente / servidor, escalabilidade e as preocupações de segurança, deve finalmente ser capaz de colocar as mãos no teclado e ir direto para a codificação ...

    Mesmo que a tentação é forte, devemos segurar um pouco e discutir alguns aspectos mais do desenvolvimento que não mencionei até agora. VirtuaPark provavelmente será um grande sucesso se claramente em mente o que queremos alcançar, e se criaram uma série de metas realistas em termos de dinheiro, tempo e investimentos dos recursos.

    A seguir está uma lista de aspectos importantes que devem ser tidas em conta antes de começar a desenvolver o nosso mundo virtual:
    Planejamento: tão óbvio quanto possa parecer, um projeto como esse requer um planejamento cuidadoso. É realmente aconselhável anotar um minério mais documentos que contém todos os aspectos da aplicação, a visão geral da arquitetura, uma lista de características, a estimativa dos recursos necessários e um plano de negócios de pequeno porte.
    O documento exige, normalmente, uma série de comentários e, como você obter mais em detalhes, você provavelmente vai perceber que o que não será possível pegar todas as características na primeira versão. Você provavelmente terá de dividir o projeto em várias fases de desenvolvimento de modo que você pode definir um calendário realista para o lançamento inicial.
    Além disso, a partida (relativamente) pequena reduz os riscos de falhas, pois você pode receber feedback dos utilizadores, numa fase anterior e corrigir o que não está a funcionar antes que seja tarde demais.

    Prototipagem: a criação de protótipos rápidos-e-sujo é geralmente uma boa maneira de verificar se a idéia vai funcionar como esperado. Quando confrontados com novos desafios, como os envolvidos na criação de um MMO, esta é a melhor abordagem para evitar reescrever grandes partes de código que supostamente o "trabalho justo".
    SmartFoxServer permite rapidamente código do lado do protótipo de servidor com alta produtividade linguagens de script como Python e Actionscript que pode reduzir significativamente o desenvolvimento / vezes prototipagem.

    Documentação: os documentos que descrevem a manter a aplicação em todos os seus aspectos é essencial para evitar esquecer as idéias que você tem discutido e nunca colocar em escrita. Além disso, torna mais fácil para instruir os novos membros da equipe ou para explicar o projeto para as pessoas fora da empresa.
    O mesmo vale para ambos os lado do cliente e código do lado do servidor. Manter o hábito de adicionar comentários clara ao código-fonte será literalmente salvar a hora de olhar para o ecrã sem nenhuma pista sobre por onde começar, e evitar tediosas sessões de depuração.

    Versioning: esta é uma ferramenta essencial na codificação de uma equipe. Ao manter o seu código de controle de versão você reduz as chances de perder o código, você tem um repositório central para os arquivos de projeto e você pode deixar vários desenvolvedores trabalham nos arquivos simultaneamente. Quando todos tiverem acabado de codificação eles só precisam de apresentar as suas alterações ao repositório central. Modificações feitas por outros membros da equipe serão mesclados automaticamente, e no caso de a mesma parte do código foi modificado por outro desenvolvedor, você será solicitado a resolver o conflito seções de código. Se a qualquer momento uma nova peça de quebra o código do aplicativo, você pode rapidamente reverter para a versão anterior, sem perder tempo precioso.
    Existem muitas ferramentas comerciais e livres versões disponíveis, recomendamos a partir de SVN, que é gratuito e de código aberto.

    Logging: depuração de aplicações multi-usuário às vezes pode ser um pesadelo horrível. A fim de evitar longos e frustrantes sessões de depuração, é altamente adivsable para registrar uma grande quantidade de informações em ambos os lados cliente e servidor. Isso permitirá que você verifique facilmente o que está acontecendo em ambas as extremidades do pedido durante o teste.
    SmartFoxServer utiliza o JDK Logging API de informações de saída para o sistema operacional do console e os arquivos de log. A API também são acessíveis através das extensões, usando qualquer um dos idiomas disponíveis (Java, Actionscript, python)

    Beta fase: a fase beta limitado público é essencial para fazer as provações final. Uma vez que o pedido tenha sido suficientemente testado internamente, é hora de publicá-lo viver e deixar um grupo selecionado de usuários jogar com ele e as questões do relatório. Isso pode ser feito de várias maneiras: através do recrutamento de beta testers profissionais, convidando os usuários selecionados / gamers em se inscrever para aceder beta, deixando qualquer registo para uma conta beta, sem restrições.
    A parte importante desta fase é de receber tanto feedback quanto possível de jogadores, a fim de procurar os erros e squash final. Isso também permite que você veja quantos recursos estão sendo utilizados em um ambiente da vida real e prever o que vai acontecer quando o aplicativo irá atingir um público maior.


    Dica: Se você é um desenvolvedor de jogos útiliza alguns emuladores como só o nome diz eles apenas emulam as imagens não são perfeitos útilizando SmartFoxServer é recomendado que você seja um programador com um nivel superior pois a ferramenta realmente é poderosa como podemos vêr a licença ilimitada do produto chega a custar 2,000€ se você tem isso para desembolsar já é um bom começo


    Tópico retirado de SmartFoxServer é uma ótima empresa todos esses APPs que se encontram em rede social como Colheita Feliz todas essas coisas podem ter certeza que essa ferramenta pode ter sido útilizada no desenvolvimento do game

    então podemos dizer que pirataria é uma coisa orrivel um exemplo é o Habbo Hotel você não terá um emulator perfeito porque o sistema é completamente diferente , essas empresas útilizam software de primeira.


    [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

      Data/hora atual: Dom maio 19, 2024 5:56 pm