DarkevilPT's Recent Forum Activity

  • Como Taurian disse no OP: "Isso seria um grande addon - A capacidade de se poder comunicar com jogos de Multijogador usando: Photon Cloud Service".

    Mas tivemos que esperar seis meses antes da ExitGames sair com seu SDK de Nuvem em JavaScript. E ent?o voc? teve de esperar enquanto eu me converti para a vers?o alfa do meu plugin PhotonPlayer para o servidor Photon (veja meu post de 7 de julho de 2012) a um comportamento PhotonClient para a nuvem Photon. E eu tive que esperar at? que a equipa de Photon encontra-se tempo para participar no desenvolvimento.

    Mas eu decidi que n?o podia esperar mais e ent?o eu prossegui sozinho, seguindo o meu caminho atrav?s da documenta??o interna bastante escassa do Photon SDK de Nuvem em JavaScript, para chegar a um demo em Construct 2 do meu comportamento Photon Client para o Photon Cloud.

    Isto ? o que voc? pode esperar para ver quando voc? executar o demo e voc? ? o terceiro a participar com dois jogadores j? jogando em outros dois PCs (eu n?o testei em outros dispositivos):

    Assim, para obter a minha demonstra??o em funcionamento:

    1) Registe-se na ExitGames para uma conta de nuvem Photon no "Plano Forever Free", em que voc? fica com uma conta de um m?ximo de 20 CCU. Voc? receber? um ID de aplica??o que voc? vai precisar no Passo 4. (? um identificador criado para a sua aplica??o na Nuvem de Photons, usado quando um aplicativo cliente se junta. Ele separa os utilizadores do seu aplicativo de utilizadores de outros aplicativos em nuvem.)

    2) Agora voc? precisa ter acesso a um servidor web HTTP (se voc? n?o tem acesso a um servidor remoto, voc? pode usar localhost para uma demonstra??o in-house). Configure uma pasta no servidor web a partir do qual poder? servir a sua demonstra??o de exemplo:

    • Vou cham?-lo de 'photonclient.workout' nas etapas seguintes.

    3) Fa?a o download dos arquivos de demonstra??o do exerc?cio da minha conta Dropbox: https://dl.dropbox.com/u/54915877/photon.workout.zip

    4) Copie todos os arquivos do download da Dropbox, para a sua pasta photonclient.workout, preservando as subpastas (css, imagens, media, photons).

    5) Coloque num editor de texto o ficheiro cloud-app-info-template.js que est? na pasta photonclient.workout.

    6) Guarda o ficheiro de volta para a mesma pasta renomeado como cloud-app-info.js.

    7) Edite-o para alterar o valor da cadeia MasterAddress para o seu Photon Nuvem Mestre servidor mais pr?ximo - voc? pode encontrar uma lista deles em http://doc.exitgames.com/photon-cloud/Regions/#cat-reference. Voc? precisar? substituir a 'port' (seguindo o c?lon) com '9090' (apenas os quatro d?gitos, e n?o as aspas).

    8) Alterar o valor da cadeia AppId ao ID do aplicativo que voc? recebeu no Passo 1.

    9) Abra o navegador (Firefox/Chrome/Safari/IE10) e entrar no endere?o photonclient.workout onde voc? copiou os meus arquivos de demonstra??o do exemplo, e que agora tamb?m cont?m o seu pr?prio arquivo de cloud-app-info.js j? editado.

    10) Digite o seu apelido de 3 caracteres e clique no bot?o "Join".

    11) Partilha o link com um amigo e leva-o a fazer o mesmo. (Se voc? n?o tem um amigo, voc? pode ir para outro computador seu e fazer o mesmo. Se voc? n?o tem outro computador, voc? pode abrir um segundo navegador e fazer o mesmo.)

    12) Mova seu jogador e seu amigo / que voc? deve v?-lo mover-se em sua / seu outro computador / browser. Voc? est? em Multiplayer com Construct 2!

    13) Tentar vencer um dos outros jogadores.

    OK, ent?o agora voc? est? interessado em carregar o meu behavior PhotonClient em Construct 2 e tentar desenvolver um jogo multiplayer para si mesmo.

    Eu tenho medo de que voc? vai ter que esperar (sim, de novo!).

    Por um par de dias, enquanto eu completar a documenta??o. Nesse meio tempo, entretanto est? aqui a tentadora da folha de evento para a minha demonstra??o de exemplo (s? para provar que realmente foi feito em Construct 2):

    <img src="http://www.millercrawford.com/images-offsite/construct2/photonclient-workout-event_sheet.png" border="0">

    ---------------------------------

    2? Parte

    ---------------------------------

    (Nota:. Antes de tentar o Behavior PhotonClient conforme descrito aqui, voc? precisa trabalhar com a minha demonstra??o, como explicado no meu post de 02 de abril 01h17, no topo da p?gina 11)

    Como prometido, aqui est? o meu Behavior Construct 2 PhotonClient onde voc? pode agora tentar adicionar a seus pr?prios sprites:

    https://dl.dropbox.com/u/54915877/photonclient.zip - instalar este da maneira usual (desculpe, eu ainda n?o fiz disto um add-on).

    Aqui est?o as ACEs que voc? pode usar - voc? encontrar? exemplos do uso de cada um da minha demonstra??o do exemplo (o capx pode ser baixado https://dl.dropbox.com/u/54915877/photon.workout.capx):

    [Condi??es / eventos]

    • Ao se juntar
    • Ao sair
    • Na web player/s para ser criado
    • Na web jogador juntou-se
    • Na jogador web atualizada
    • On jogador web abandonou
    • Em caso de colis?o com outro jogador
    • Em impactado por outro jogador
    • Na mensagem
    • No jogo servidor pronto (actualmente confi?veis ??- a necessidade da equipe Photon para adicionar um manipulador de evento connect)

    [Ac??es]

    • Inicializar dados do jogador na web para criar (ou seja, os dados a serem usados ??por C2 na cria??o de players da web)
    • Definir ID do jogador web (esta pares s?o alocados no Photon atrav?s do photonID e com C2-alocado no UID)

    [Express?es]

    • WebPlayerX (A coordenada X actual do jogador web escolhido)
    • WebPlayerY (A coordenada Y actual do jogador web escolhido)
    • WebPlayerUID (UID do jogador web escolhido)
    • NumWebPlayersToMake (O n?mero de jogadores da web para fazer)
    • WebPlayerPID (Photon ID do jogador web escolhido)
    • Nome (de qualquer jogador ou do jogador web escolhido / seleccionados)

    Eu liberalmente deixei comentada a minha demo de exemplo, e espero que isso v? servir como documenta??o suficiente para o uso de cada uma das ACEs.

    O objecto PhotonClient tamb?m tem estas propriedades personalizadas que podem ser definidas da maneira normal, como (onde mais poderia?).

    A barra de propriedades:

    • Auto-repeat: Se activado, as setas do teclado (e movimentos dos Sprite) repetem-se ao manter pressionado. Caso contr?rio, as chaves precisam ser pressionadas repetidamente para produzir movimento. Isso pode ser mais f?cil para controlar o posicionamento.
    • Tiled: Se activado os sprites podem mover-se de piso para piso, em vez de pixel por pixel (ver o meu coment?rio abaixo).
    • Tamanho da Tile: Comprimento (em pixels) do lado de telha (o padr?o ? 32).
    • Come?o Aleat?rio (Random Start): Se activado, o meu jogador come?a numa posi??o escolhida aleatoriamente (ver o meu coment?rio mais abaixo).

    ]] Mais informa??es sobre a propriedade 'Tiled': Tal como acontece com a maioria dos jogos multiplayer, a lat?ncia ? um problema. Isso pode resultar em movimentos de pixel-a-pixel ranhosos. Uma maneira simples de lidar com isso ? fazer com que grandes movimentos de sprites de piso para piso, ao inv?s de tentar suavizar os movimentos de pixel por pixel. ? por isso que a minha demonstra??o de treino usa movimentos de lado-a-lado.

    ]] Mais sobre a propriedade 'Random Start': Quando activado, uma posi??o inicial aleat?rio ? escolhida para seu jogador e (mais importante) se j? passa a ser um jogador web nessa posi??o, outra posi??o ? escolhido e marcado, e assim por diante, at? uma posi??o desocupada ser encontrada. Caso contr?rio, ? at? voc? para escolher a posi??o de partida, e prever a possibilidade de uma colis?o inicial.

    Algumas coisas a serem observados:

    ]] Voc? precisa de utilizar o "Export Project" na op??o (como um site HTML5)- 'Fazer "Preview" vai dar erro (experimenta e ver?s!).

    ]] N?o executar a exporta??o atrav?s do minifier - ainda s?o algumas tor??es ser resolvidos antes que ele vai atender aos requisitos exigentes do Google Closure Compiler.

    ]] A entrada do nome do jogador, o "Junte-se" 'e' "Leave" bot?es, e o header (?= Construct 2 <-> Photon Cloud multiplayer =?) s?o criados antes do C2 runtime ser iniciado!

    Eles podem ser decorados no photon_client-inputs.css na pasta photon.workout/css, e no cabe?alho pode ser alterado editando o ficheiro inputs_header.txt na pasta photon.workout.

    ]] The Cloud Photon Service permite v?rias salas num s? lobby de jogo. Nesta fase, eu n?o tenho tentado implementar esse recurso e meu Behavior PhotonClient acessa uma sala individual (chamado de 'C2demo').

    Para todos as exporta??es que fizerem a pasta final dever? conter estes ficheiros que v?m na pasta exemplo do demo (Modificados ou n?o eu n?o sei, mas s? funcionar? correctamente com o SDK do photon):

    /photon/Photon-Javascript_SDK.js

    /css/photon_client-inputs.css

    /cloud-app-info.js

    /inputs_header.txt

    Aten??o todos os cr?ditos deste tutorial v?o para o utilizador Velojet!

    Thread Original: Multiplayer Game atrav?s de PhotonClient

    Atention all the credits for this tutorial goes to Velojet!

    Original Thread: Multiplayer Game with PhotonClient

    Personally I want to thank you Velojet for this spectacular development that will help me in the future to develop a project that I have been working for few months ago.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • (AVISO: Velojet escreveu este [plugin / behavior] como um meio de explorar os aspectos pr?ticos da utiliza??o Construct 2 em um contexto multiplayer. ? oferecido aqui com esse esp?rito, e n?o como uma maneira totalmente funcional de fazer jogos multiplayer com Construct 2.)

    NOTA: N?o ? sens?vel ao toque e s? foi testado em navegadores de PC (Firefox, Chrome, Safari).

    Ent?o, pela primeira vez, aqui est? o meu MultiPlayer em a??o , atrav?s da internet, em um jogo realmente simples de dois jogadores, Cleaners. Voc? move o seu mop em volta da mesa, tentando limpar mais pe?as do que seu oponente. Se voc? colidir com ele / ela / ele, voc? perde.

    NOTA: Voc? pode achar que h? um grande lag entre as teclas pressionadas e seu movimento mop. Esse atraso depende de uma variedade de factores, que ser? discutido mais tarde num post.

    Primeiro, voc? vai ver:

    <img src="http://www.millercrawford.com/images-offsite/construct2/waiting_server.jpg" border="0">

    Felizmente, voc? n?o ter? muito tempo para esperar antes de voc? ver, se voc? for o primeiro a entrar no jogo:

    <img src="http://www.millercrawford.com/images-offsite/construct2/waiting_2nd_player.jpg" border="0">

    Se j? ? outro jogador que est? esperando por voc? para aparecer, voc? ver?:

    <img src="http://www.millercrawford.com/images-offsite/construct2/ready_room_1.jpg" border="0">

    ... e agora voc? pode come?ar a se mover seu mop (setas) e limpeza -, enquanto o outro jogador, com o mop cinza, faz a mesma coisa - e tenta limpar mais pe?as do que voc?.

    Se voc? foi o primeiro a entrar, voc? vai ter que esperar por um outro jogador - se ningu?m aparecer, voc? pode disparar at? outro navegador e tentar mover duas mops de uma s? vez. Existem v?rias salas de jogos, ent?o uma s?rie de jogos pode ser jogado simultaneamente.

    Agora, para dar uma olhada nos bastidores. Meu objetivo principal foi o de explorar as possibilidades de jogos multiplayer usando um front end para o Construct 2. Eu tamb?m queria fazer um plugin/behavior MultiPlayer para que os Construtores pudessem usar num n?vel mais elevado, IOW eles / voc? n?o deve ter para manipular mensagens Socket.IO e separ?-las, a fim de extrair o seu significado.

    Voc? pode ver isso em como o c?digo do Cleaners C2 funciona com a actualiza??o de um jogador de web:

    <img src="http://www.millercrawford.com/images-offsite/construct2/c2-web_player_update.jpg" border="0">

    Uma maneira em que eu consegui simplificar o front end C2 era fazer meu MultiPlayer um comportamento que se anexa a um objeto (normalmente um Sprite), ao inv?s de um plug-in separado para atuar como um controlador. Originalmente, eu comecei a estudar a estrada do plugin Photon com meu plugin PhotonPlayer . Isso combinado com o controlador de um Sprite em uma ?nica unidade, mas isso significava que tinha de lidar com todas as rotinas de desenho complexo em si. Agora, meus MultiPlayer est?o ligados a um comportamento que ? mais complicado para o objeto a que est? ligado, deixando-o livre para enviar apenas a movimentos para o servidor do jogo e voltar a partir do servidor as informa??es de localiza??o actualizado e outros dados (como a pontua??o). (Mais detalhes mais tarde sobre suas rela??es com o servidor.)

    OK, ent?o voc? est? querendo experimentar o meu comportamento multiplayer para si mesmo, em seu pr?prio servidor. Aqui est? o que voc? precisa fazer (voc? j? deve ter feito os passos 1 e 2):

    1) Configure um servidor NodeJS - voc? encontrar? como baixar e configurar nas instru??es aqui . (Aviso:. Estou disposto de oferecer alguma ajuda com este passo - se voc? precisar, voc? pode encontrar muitos na interweb)

    2) Instale estes m?dulos: Install Express, NodeJS (axo que ? now)NowJS. (O mesmo aviso se aplica aqui.)

    3) Download meu servidor do Cleaners.

    4) Descompacte-o em uma subpasta de sua instala??o NodeJS.

    5) Execute o servidor do jogo, digitando na linha de comando nessa pasta: node server.js.

    6) Abra uma janela do navegador neste local: localhost:7000 (escolher uma porta diferente, se voc? tem 7000 j? est? em uso por outro aplicativo - voc? tamb?m vai precisar alterar o n?mero da porta na linha 34 de server.js). Voc? dever? ver a primeira imagem acima (com 'localhost:7000' como o endere?o neste momento).

    7) Abra outra janela do navegador no mesmo local: localhost:7000. Voc? dever? ver a terceira imagem acima, com as posi??es dos jogadores invertidos.

    8) Mova o mop em uma janela e voc? tamb?m ver? seu movimento contrapartida cinza na outra.

    9) Mudar de janela em janela e veja se voc? pode bater-se!

    Ent?o, onde ? que isto est? a ser constru?do para os dois? Poder?o voc?s estar a perguntar. Bem, se voc? olhar na pasta 'public', voc? vai ver c2runtime.js. Isso ? Construir a contribui??o de 2 a Cleaners. Ela veio do meu projecto Cleaners Construct 2.

    Voc? pode transferir agora o meu capx do Cleaners e olhar para sua folha de eventos no Construct 2, voc? vai achar que n?o h? nenhuma l?gica do jogo l?. Num jogo multiplayer industrial, um servidor com autoridade lida com toda a l?gica. Os ?nicos dados de localiza??o que o Construct 2 "jogo" envia para o servidor ? a direc??o de um movimento (esquerda / direita / cima / baixo) feito pelo objecto que o comportamento multiplayer ? anexado. Ele n?o envia suas coordenadas x / y, pois esta seria uma maneira muito f?cil para um cliente desonesto do "jogo" enganar.

    Da mesma forma, o servidor mant?m a pontua??o e os dados de sa?de e envia-los para os jogadores do cliente (juntamente com quaisquer outros dados necess?rios sobre o estado do jogo). Isso n?o deixa muito para o Construct 2 "jogo" para fazer! Na verdade, voc? vai ver que ele realmente tem apenas duas tarefas:

    1) enviar movimentos para o servidor do jogo, e

    2) apresentar o estado actual do jogo.

    Eu fiz um demo em Multiplayer mais simples para voc? usar como base para experimentar por si mesmo. Veja como:

    1) Download o meu behavior MultiPlayer e colocar ele na pasta que acaba em Construct 2\exporters\html5\behaviors.

    2) Download o meu Multiplayer Workout capx .

    3) Download meu servidor NodeJS Workout Multiplayer ] e descompact?-lo em uma outra subpasta de seus nodejs instala??o.

    4) Abra uma janela do navegador em localhost:7700.

    5) Abra as janelas do navegador (quantos voc? quiser) no mesmo endere?o.

    6) Mova o sprite em uma janela e voc? tamb?m ver? as suas cong?neres de cores diferentes mover nos outros:

    <img src="http://www.millercrawford.com/images-offsite/construct2/multiplayer-workout.jpg" border="0">

    N?o ? um jogo! (Eu disse que era mais simples.) Por um lado, n?o ? nenhum jogo s?o quartos separados, e, como voc? acabou de ver, n?o h? nenhum limite imposto ao n?mero de jogadores.

    Eleve a sua imagina??o para experimentar. Mas note que voc? n?o ser? capaz de visualiz?-lo da maneira normal! Isso porque ele n?o sabe o que fazer se ele n?o se poder conectar ao servidor do jogo. Ent?o aqui est? o fluxo de trabalho que voc? precisa seguir:

    1) Edite Multiplayer Workout em Construct 2 (claro!).

    2) Exportar seu projecto como um site HTML5 para a pasta p?blica da subpasta nodejs que voc? criou no passo 3 acima. N?O fazer "minify" do script - porque agora o objecto NowJS confunde o Google Closure Compiler.

    3) Edite server.js para implementar a l?gica de jogo. Voc? precisa estar familiarizado com JavaScript para fazer isso, ? claro, mas eu liberalmente comentou o meu c?digo para ajud?-lo a acompanhar o que se passa.

    4) Os passos seguintes s?o os mesmos que os passos 5-9 do primeiro conjunto de instru??es numerados acima.

    Para fazer um jogo de seu pr?prio a partir do zero usando o meu comportamento multiplayer, voc? precisa saber o que ele oferece - aqui est?o as suas condi??es (eventos), a??es e express?es que voc? pode fazer uso de:

    • Condi??o: Novo jogador web juntou
    • Estado: jogador Web foi atualizado
    • Estado: em caso de colis?o com outro jogador
    • Estado: jogador Web / s para ser criado
    • Condi??o: No meu jogador mudou
    • Estado: Web jogador deixou (usar isso para destruir o sprite associada)
    • Estado: Servidor do jogo est? pronto
    • A??o: Definir o ID do jogador na web (a partir do C2-alocado UID)
    • A??o: Inicializar dados do jogador na web para criar (a partir do servidor alocado ID do cliente e sua atual coordenadas X / Y)
    • Express?o: Obter atual X coordenada de web jogador
    • Express?o: Obter Y atual coordenada de web jogador
    • Express?o: Obter web jogador C2 UID
    • Express?o: Obter n?mero de jogadores da web para fazer
    • Express?o: Obter servidor alocado UID do jogador
    • Express?o: Obter o nome do jogador
    • Express?o: Obter pontua??o atual do jogador
    • Express?o: Obter sa?de atual do jogador

    (Os tr?s ?ltimos n?o s?o express?es usadas nos meus projectos da amostra.)

    H? muitos problemas com v?rios jogadores que eu n?o sei lidar. Por exemplo, eu n?o tenho tentado compensar a lat?ncia (o tempo gasto na movimenta??o de dados de e para o servidor) ou lag (atraso entre a a??o de um jogador e seu resultado - em parte causado pela lat?ncia).

    Subscribe to Construct videos now

    est? uma explica??o muito ?til para essas quest?es por Rob Hawkes num Google TechTalk, falando sobre as suas tentativas de criar um MMOG em HTML5 (ele ? particularmente bom em lidar com fraudes, ele carrega as cicatrizes de v?rios encontros).

    E eu vou discutir essas quest?es como elas afectam o meu comportamento MultiPlayer em um post mais tarde, bem como explicar por que isso ? um comportamento baseado em azulejo, em vez de uma que permite o movimento pixel-por-pixel (voc? provavelmente pode adivinhar o porqu?).

    Meu objectivo tem sido o de criar um contexto experimental pr?tico em que podemos explorar e discutir as possibilidades e os problemas do uso de Construct 2 no desenvolvimento de jogos multiplayer. Deixe-me saber se isso ajuda.

    Aten??o todos os cr?ditos deste tutorial v?o para o utilizador Velojet!

    Thread Original: Comportamento Multiplayer + Demo Online

    Atention all the credits for this tutorial goes to Velojet!

    Original Thread: Behavior Multiplayer + Online Demo

  • This is really awsome. I will try to implement that later. But before that I want to ask something.

    It's possible to create an server using this plugin and methods? I mean, a real server, not making the player as server.

    Thanks!

    You mean like this? browserquest.mozilla.org

    Idk if browserquest is an scirra game.. but it looks to work fine as you describe.

  • Help!

    I can't pass this part of the tutorial.

    "Instructions

    Once you install node.js and socket.io, you can CD into the folder that contains example_server.js and type "node example_server.js" in the commnad prompt. The server will run listening for connections on port 8099.

    Checked and Done

    Open the capx and run it, make sure the "ChooseServer" layout is the 1st to run."

    It gives me this error!

    <img src="http://i.imgur.com/fOd40hh.png" border="0" />

DarkevilPT's avatar

DarkevilPT

Member since 5 Dec, 2012

None one is following DarkevilPT yet!

Connect with DarkevilPT

Trophy Case

  • 12-Year Club
  • Email Verified

Progress

13/44
How to earn trophies