Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Antimatéria

Jogo de cartas online

Mensagens Recomendadas

Antimatéria

Boas,

Já sigo o forum há uns tempos, mas não tenho passado de um simples lurker lol.

Comecei este projecto há um mês atrás e consiste em vários jogos de cartas famosos pelo pessoal da universidade.

Jogos:

  • Olho
  • Sueca
  • Sueca Italiana

Estou a fazer este projecto em C# (por ser a linguagem que melhor conheço)

A aplicação está dividida em duas, uma aplicação cliente, onde existe o tabuleiro de jogo, uma shoutbox e uma lista com os jogadores online. E uma aplicação servidor que fica encarregue na difusão da informação dos jogos entre os jogadores online e o armazenamento dos stats destes mesmos, como o número de vitórias, username, password, número de jogos feitos etc.

Para a comunicação entre as aplicações, para facilitar o processo vou usar um programa de vlans como o hamachi.

Estou a partilhar a informação cliente-servido e servido-cliente em ficheiros xml para facilitar a organização de dados e identificar os dados presentes na comunicação por exemplo: carta jogada por um determinado jogador, shout de um jogador, inicio de jogo, final de jogo, novo registo, login etc...

Pretendo também fazer para que seja possível correr vários jogos ao mesmo tempo utilizando "salas de jogo".

Um utilizador cria uma sala no servidor, de um determinado tipo de jogo e os jogadores quando fazem login recebem uma lista com as salas disponíveis às quais se pode juntar e jogar com os utilizadores nessas salas.

Que acham?

Têm ideias a acrescentar a este projecto?

Obrigado desde já por lerem.

Com os melhores cumprimentos,

Anti


#include <stdio.h>main(){  printf("Hello World");}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Antimatéria

Estava a pensar em logins só mesmo para manter a informação do jogador, como as vitórias e em que jogo.

Os registos/logins n acho nada de complicado, já tenho o form de registos feitos no client app, depois no server app é só escrever o registo na bd, nada de muito complicado, acho eu


#include <stdio.h>main(){  printf("Hello World");}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Antimatéria

Inicialmente estava a pensar fazer em java, mas os meus conhecimentos de bibliotecas e comandos é quase 0, estou agora a aprender.

Talvez o meu próximo projecto seja em java lol


#include <stdio.h>main(){  printf("Hello World");}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Antimatéria

Deixo aqui alguns screens da aplicação cliente, ainda está um pouco bruto.

clientapp.th.jpg

clientplay.th.jpg

clientreg.th.jpg

clientngame.th.jpg


#include <stdio.h>main(){  printf("Hello World");}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Então, o projecto está a andar? Já criaste um servidor que trate de transacções básicas, como logins, registos, etc?


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Antimatéria

Esta última semana tive que parar um bocado com o projecto, devido a falta de tempo.

Mas no final desta semana espero já ter o servidor capaz de fazer registos, logins e começar a distribuir cartas pelos jogadores. :)


#include <stdio.h>main(){  printf("Hello World");}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Antimatéria

Boas tardes srs. Gurus da programação ;) Digam-me se acha se isto é fiável ou possível ou se não passa de total palermice minha lol.

Como sabem, este projecto é constituído por uma aplicação cliente e uma aplicação servidor, e como se destina a vários jogadores, vão estar várias aplicações clientes a comunicar com a aplicação servidor.

Ambas as aplicações recorrem ao uso de threads para separar o envio, recepção e tratamento de dados para que estas não se entupam todas sempre que chegar novas informação.

Mas estava agora a pensar em usar mais umas poucas threads para fazer o seguinte:

  • Aplicação Cliente e Servidor:
    • Criar pelo menos 4 threads, cada uma delas responsáveis por enviar/receber (2 threads, uma para cada acção) dados relativamente ao chat e outras 2 também para enviar/receber outras informações sobre o jogo
    • Problema: É possível uma aplicação estar a fazer listener a duas portas e estar a enviar informação por mais outras 2 portas? É fiável esta situação?

Neste momento, cada uma das aplicações encontra-se com 3threads activas, 1 para enviar dados, 1 para receber dados e outra para tratamento de dados, isto tudo para o utilizador não levar com breaks quando a aplicação processa a informação.

Não pretendo criar 100 threads por programa, estava a pensar fazer o servidor com 20 threads no máximo dos máximos, e o cliente com umas 5 ou 6, para não fazer muita carga nos processadores.

Também não pretendo criar uma porta para cada acção e entupir o programa só com isto, mas se aumentar a performance em termos de tempo de resposta do servidor ao cliente e vice-versa e não pesar muito no processador acho que é um caso a ponderar ou vocês não fariam isto?

Peço desde já desculpa se isto está uma confusão de ideias, mas tenho andado a pensar nisto já desde ontem à noite e já me passaram tantas coisas pela cabeça, que espero não ter baralhado tudo neste texto :(

Obrigado,

Nuno Gomes


#include <stdio.h>main(){  printf("Hello World");}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JD557

É pá, eu não sou grande entendido de redes, mas uma coisa sei: Os jogos de cartas são jogados por turnos.

Sendo assim, porque te preocupas tanto com a lag? Penso que o melhor seria mesmo apostares num sistema mais simples, para que o jogo corra em pc podres de velhos.

Ninguém vai notar a lag do jogo (simplesmente vão pensar que o outro ainda não jogou), no entanto, se o jogo correr mal nalguns pcs, os jogadores vão reclamar.

No entanto, esta é só a minha opinião. Provavelmente alguém mais instruído cá do fórum te indique qual o melhor caminho a tomar.

Vá, boa sorte com o projecto ;)


MIEIC @ FEUP

http://project557.blogspot.com/ --- Development Blog

Proteja a sua pen: http://lastknight.pt.vu

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Antimatéria

O problema não é por ser um jogo por turnos, é por existirem outras funcionalidades no jogo, como por exemplo o chat e a possibilidade de consultar os stats dos outros jogadores.

Na aplicação cliente, talvez não faça muito sentido ter várias portas e muitas threads, mas no servidor já não sei até que ponto será mais fiável fazer isto, visto que pretendo fazer com que seja possível ter vários jogadores a jogarem diferentes jogos em simultâneo.


#include <stdio.h>main(){  printf("Hello World");}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
IRX773

Bom projecto. Depois mete o link que o meu cota irá adorar passar o tempo dele a jogar.

Acho que deverias realmente colocar isso numa versão online mesmo ... sem instalação e tudo mais ... aproveitas o que já tens em C# e usas isso online mesmo.

O servidor, de qualquer uma das formas (online ou servidor-cliente) tem de ser bom ou vários servidores ... aconselho um servidor dedicado uma vez que vais usar processamento de dados.

Por fim e apoiando o mgl acho que uma versão com logins e tudo e outra sem eles era bom ... com logins guardava os dados, estatísticas e até dava para campeonatos online, sem login era só para o fun e para ser mais rápido. Algo do género dos jogos como o Bomberman no brincar.pt que dá tanto som login como sem login podendo estes jogarem uns contra os outros.

Apoiando o JD557 acho que colocar isso a comer poucos recursos era fulcral pois o publico alvo desses jogos não é pessoal com bons pc's topo de gama. O chat podia ser usado num servidor aparte só para chats assim o lag seria muito reduzido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JD557

Pois, no servidor é bom que tenhas várias threads. Mas se isso for bem programado, podes melhorar o servidor sem ter de alterar o cliente, pelo que podes bem começar por um sistema mais simples, mandas um alpha para começares a chamar pessoal para o jogo e vais melhorando o servidor conforme achares necessário :D


MIEIC @ FEUP

http://project557.blogspot.com/ --- Development Blog

Proteja a sua pen: http://lastknight.pt.vu

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
colemauro

Tiveste ai uma ideia que eu também tenho em mente..fazer um jogo de cartas online.. mas por falta de tempo ainda não comecei a pensar nisso.

De qualquer modo gostaria se quiseres, de conversar um pouco contigo e quem sabe trocar ideias.

Abraço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Antimatéria

Tiveste ai uma ideia que eu também tenho em mente..fazer um jogo de cartas online.. mas por falta de tempo ainda não comecei a pensar nisso.

De qualquer modo gostaria se quiseres, de conversar um pouco contigo e quem sabe trocar ideias.

Abraço

Com certeza, qualquer coisa manda-me pm


#include <stdio.h>main(){  printf("Hello World");}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.