• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NuGuN

Irá ter sucesso?

31 mensagens neste tópico

Boas.

Eu ando a pensar num projecto à já algum tempo e ate já falei dele aqui no forum. A questão é, será que o pessoal irá aderir devido ao tipo de projecto que é (também ira depender de como ficará...)

O projecto é este, eu tenho andado a trabalhar nele indirectamente mas estou hesitante se devo ou não avançar com isto por ter receio de ter  todo este trabalho e depois o pessoal não lhe interessar coisas do tipo...

Resumindo o que é o projecto:

A ideia é o pessoal desenvolver programas para combaterem uns contra os outros. Haveria um simulador num servidor qualquer e depois seria como um campeonato dividido por várias ligas em que cada jogador teria de combater com outros jogadores da mesma liga. O programa a desenvolver para jogar seria na linguagem de programação em que o jogador se sentisse mais à vontade ou seja, pode ser programado em qualquer linguagem uma vez que o simulador receberia apenas comando do tipo MOV(x, y). Seria jogado online, dentro de "labirintos" e cada robot teria acesso a vários tipos de sensores virtuais (mas com sinais muito idênticos aos reais) como radar, sensores de proximidade, entre outros, e o programa teria de ser programado para ser capas de interpretar esses sinais que lhe seria enviados pelo simulador. Estes sensores seriam utilizados para o programa se movimentar dentro do labirinto para não chocar com as "paredes", localizar o programa inimigo, etc...

Bem... não quero estar a alargar muito mais esta explicação para não ficar muito extensa e chata de ler... alguma dúvida, perguntem..

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tudo irá depender da dificuldade de se criar um programa base, e de uma coisa que me parece que te esqueceste, se é suposto ou não o jogador poder interferir durante a execução.

Ou seja, podemos criar um programa em, por exemplo, VB, onde o utilizador visualiza o que se passa na "arena" e pode dar as ordens por botões criados por ele (com acções diversas, a imaginação é o limite), ou o programa tem que decidir sozinho todos os seus movimentos?

Irão existir turnos ou será realtime?

A mim parece-me ter algum interesse. Então se na altura do lançamento se disponibilizassem alguns códigos modelo (diga-se em C, VB, etc, o mais comum) que para os iniciantes bastasse editar ligeiramente..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na minha opinião pode ter um grande sucesso. Além de ser divertido pode-se praticar bstante com isso. Existe o http://www.project-hoshimi.com que acho que é mais ao menos do estilo do que pensas fazer.

Também gosto da ideia de cada um poder usar a linguagem de programação que prefere. Mas há muita coisa por especificar. Como estás a pensar em fazer as coisas lol mesmo que sejas mais técnico diz aí que é para se ter uma ideia.

Quanto ao jogador poder controlar acho que não, o melhor era deixar o programa correr sozinho, acho que essa era a ideia.

Acho que é uma boa ideia para continuar  ;) se precisares de ajuda para alguma coisa diz.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Respondendo ás questões colocadas...

... se é suposto ou não o jogador poder interferir durante a execução.

Ou seja, podemos criar um programa em, por exemplo, VB, onde o utilizador visualiza o que se passa na "arena" e pode dar as ordens por botões criados por ele (com acções diversas, a imaginação é o limite), ou o programa tem que decidir sozinho todos os seus movimentos?...

Essa questão do utilizador poder interferir não foi esquecida ( eu preferi não falar nela  :-[) e ate foi falada como um problema pois a ideia é o programa se desenrascar sozinho sem a intervenção do utilizador. É claro que vai haver pessoal que vai fazer isso que disseste, com botões etc... eu falei desse problema com o shumy e chegamos à conclusão que com o passar do tempo os programas se iriam tornar mais eficazes e ficaria mais complicado para um utilizador controlar a situação manualmente uma vez que teria de interpretar as instruções dos sensores virtuais, etc...

...

Irão existir turnos ou será realtime?

...

Para começar os torneios seriam tipo os torneios da warzone e coisas assim, era combinada acordada uma hora para o combate e pronto... um modo realtime... bem, eu já pensei nisso mas por agora prefiro ficar só por este modo dos torneios  ;)

...

Então se na altura do lançamento se disponibilizassem alguns códigos modelo (diga-se em C, VB, etc, o mais comum) que para os iniciantes bastasse editar ligeiramente..

...

Ora ai esta um tema de que eu me esqueci completamente. A ideia é mesmo essa Warrior. Eu queria apostar num bom suporte para que qualquer utilizador pode-se jogar.A minha ideia era criar "modulos" no minimo para oas linguagens que eu considero mais utilizadas como VB6, C/C++, Phyton, etc, etc. Uma vez que nem toda a gente sabe utilizar SOCKETS eu queria mesmo dar um bom apoio nessa parte com códigos exemplo e tutoriais. Não só na parte das comunicações com o simulador mas também na parte de interpretar as informações que os sensores enviam etc... resumindo, dar um suporte de forma a que qualquer pessoa com conhecimentos minimos de programação consegui-se  desenvolver um programa razuável...

...

Também gosto da ideia de cada um poder usar a linguagem de programação que prefere. Mas há muita coisa por especificar.

...

Essa é a grande diferença que eu encontro deste projecto para os já existentes, o que já vi ate agora têm linguagens próprias e se quizeres programar o teu "robot" tens de aprender outra linguagem... O que eu quero fazer tu é que escolhes a linguagem que queres, ate pode ser em linux, tanto faz... apenas tens de conhecer os comandas que o simulador utilizar.

...

Como estás a pensar em fazer as coisas lol mesmo que sejas mais técnico diz aí que é para se ter uma ideia.

...

As arenas serão matrizes e para que se pareçam com labirintos ou algo do genero posições especificas da matriz serão restringidas. Por exemplo, queria fazer uma "parede" do ponto 5 ao 15 da matriz, então, definia no simulador que do ponto 5 ao 15 não era permitido entrar... Para mover o programa dentro da matriz utiliza-se por exemplo o comando MOV(x, y) onde "x" e "y" seriam as coordenadas da matriz, Quando digo "mover o programa dentro da matriz" não quer dizer que o programa lá esta mesmo, e nem sequer estará nada dentro da matriz apenas é enviada a instrução ao simulador e ele simula a posição do programa.

Um exemplo de um sensor virtual seria por exemplo os sensores de ultra-sons que são utilizados na realidade. Ainda não pensei bem como vai ser mas imagina que querias saber se se estava alguma coisa na posição à frente da tua posição actual (o sensor teria um alcance maximo), enviavas um pedido ao simulador, com um comando definida para tal tarefa, VerUltrasom por exemplo e era-te enviada a informação. Na realidade nós sabemos a velocidade que o ultrasom demora a percorrer uma  determinada distancia e depois é só fazer as contas com a sua velocidade e o tempo que percorreu e sabemos a distancia. Ora eu aqui quero fazer uma coisa idêntica. É definida uma velocidade fictícia para os ultra-sons virtuais e depois faz-se as contas ao tempo ou ao numero de casas da matriz que percorreu, são tudo coisas a definir ainda...

Achoo que o principal esta, mais alguma dúvida, já sabem...

Estás a falar fazer algo deste género?

http://www.corewars.org/

Sim, é isso mas lá esta, esse tem uma linguagem própria.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essa questão do utilizador poder interferir não foi esquecida ( eu preferi não falar nela  :-[) e ate foi falada como um problema pois a ideia é o programa se desenrascar sozinho sem a intervenção do utilizador. É claro que vai haver pessoal que vai fazer isso que disseste, com botões etc... eu falei desse problema com o shumy e chegamos à conclusão que com o passar do tempo os programas se iriam tornar mais eficazes e ficaria mais complicado para um utilizador controlar a situação manualmente uma vez que teria de interpretar as instruções dos sensores virtuais, etc...

Então queres dizer que cada pessoa corria o programa do computador deles? A ideia que eu tinha era que cada pessoa fazia o "robot" e submetia-o para um servidor. Depois era tal como falas-te na ideia dos torneios, a determinada hora de determinado dia o simulador corria. Assim era impossível haver interaccção do utilizador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A ideia era cada utilizador correr o programa da sua própria casa. Assim como sugeris-te também é bem pensado porque acabava com esse problema da interacção do utilizador e o utilizador não precisava estar online para que se realiza-se o "combate" mas traz outras limitações, assim seria mais complicado de  criar um ambiente gráfico 2D para se ir vendo o que se estava a passar no simulador.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imagino que de mais trabalho mas acho que compensava, assim toda a gente era no máximo espectador. Existia um cliente em que o utilizador se identificava com o nome do robot do qual pretendia ver a actividade e e depois era uma questão de comunicar com o servidor.

E assim evitavam-se os vários problemas de pings, ligações a cair etc.. podia ainda ser guardado um histórico de todas as accoes feitas para que o utilizador podesse ver mais tarde caso não tivesse online n altura em que foi executado o combate.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Atenção..

Correrem ambos na mesma máquina, mas mesmas condições, não é fácil, mas faz-se.

O problema é este: dois programas, processam informação mais rápido do que aquela que pode ser mostrada. Se for como eu estou a pensar, os combates terminariam em poucos segundos.

Até que ponto é mau dar-mos o controlo ao jogador? Em vez de construirmos o robot, estamos a construir a máquina que vamos pilotar. Continua a ser aliciante, e mais inovador. E talvez mais simples, porque cada um fica responsável pela sua própria interface gráfica.

Além de que se coloca a questão. Bom piloto ou bom construtor? Já imagino equipas a serem formadas. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, a ideia é no minimo aliciante e espetacular...Eu axo que é uma ideia de avançar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Bom piloto ou bom construtor?

Axo que esta questão resume o problema.

Eu na minha opinião axo que se deveria  de optar por "Bom construtor" e não "bom piloto"  porque o bom construtor implica que seja um bom programador e um bom piloto pode até ter um programador mediano mas como é bom piloto ganha a quem é um 'programador mais bom' ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende do objectivo do jogo. Se for entrar em competições, etc, ambas as coisas são importantes. Não invalida que um bom construtor se junte a um bom piloto para formarem uma boa equipa, com o feedback adequado etc..

Da mesma forma, na maioria das vezes o melhor piloto de uma dada máquina será o próprio construtor. Conhece todas as mensagens, o objectivo da máquina, os defeitos, etc. No início seriam um só, piloto e construtor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim,.. tudo depende do objectivo. Eu é que nao me fix entender convenientemente.

A questão que eu estava a levantar é que supostamente a ideia baseia-se em competir a nivel da programação, somos uma comunidade de programadores, tás a ver?

(Não sei se expus o meu ponto de vista com deve de ser ...:S )

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acho que o objectivo aqui era o robot ser autónomo. Porque pelo que percebi pelo menos no plano inicial todos os robos sao iguais e com as mesmas capacidades o que se pode fazer é programar a sua inteligência, o que é que o robot faz em determinadas situações.

Quanto ao jogo acabar em poucos segundos isso é verdade, mas imagino que se faria uma espécie de delay no simulador ou talvez mais simples, o simulador corria registava toda a informação num ficheiro e o cliente de cad utilizdor lia a informação com o delay. De qualquer dos modos esse ficheiro convinha ser criadp, assim se alguém quisesse ver como correu a partida depois podia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, pelo que eu precebi desde o inicio que se comecou a falar nisso já aqui á uns tempos a ideia seria essa.

"ou talvez mais simples, o simulador corria registava toda a informação num ficheiro e o cliente de cad utilizdor lia a informação com o delay"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A solução que o merlin3000 (enviar os programas para o servidor) poderia evitar alguns problemas, mas também traz outros, por exemplo, em linguagens como java ou python o utilizador teria de fazer um executavel ou o servidor teria de conseguir interpretar essas linguagens....  :D

O problema é este: dois programas, processam informação mais rápido do que aquela que pode ser mostrada. Se for como eu estou a pensar, os combates terminariam em poucos segundos.

Também já tinha falado deste problema com o shumy e o que se pensou fazer foi definir um curto espaço de tempo entre cada instrução, por exemplo, imaginemos que cada instrução teria de ser enviada com uma diferença de tempo de 250 milisegundos. Eu enviava uma instrução - MOV(230, 456) - só 250 milisegundos depois poderia enviar outra instrução. 250 milisegundos pode parecer pouco mas quando eu falo que o senário será uma matriz, ora eu não sei bem ainda e só se poderá ajutar este tipo de "medidas" depois de ver como as coisas funcionam mas imaginemos que uma arena de tamanho médio ou minimo seria de 500x500, a uma velocidade de 250 milisegundos de diferença entre cada instrução, na melhor das hipóteses podia executar 4 instruções por segundo, depois com lags etc, etc....

Em relação ao utilizador poder controlar o programa manualmente, eu estou certo de que isso deixará de ser praticável assim que os programas se tornassem mais evoluídos  ;)

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tudo bem, mas deixar essa hipótese em aberto..

Tudo o que é preciso é fazer como disseste inicialmente, a uma dada hora, ligam-se os dois ao servidor, e o combate começa. Têm 10 segundos por acção. Pode ser computada ou pensada mentalmente, tanto faz. O que importa é ganhar.

Tudo depende do objectivo do jogo, já perceberam a ideia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que teriam de ser todos executáveis. Recebiam informações do simulador (a posição e as que infos que o robot tinha pedido).

Senão a unica alternativa que estou a ver seria utilizar apenas uma linguagem (criada para esse  efeito ou não). Mas para manter o objectivo de multiplas lingugens teriam que ser criados SDK's para cada uma das linguagens que podesse ser usada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é possível trabalhar-se com executáveis. Estaríamos a abrir a máquina a todo o tipo de virus e trojan horses. Esquecer completamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é possível trabalhar-se com executáveis. Estaríamos a abrir a máquina a todo o tipo de virus e trojan horses. Esquecer completamente.

Como assim? Estas-se a referir ao cliente ou ao servidor?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acho um projecto bastante interessante e que deveria conseguir obter bastante adesão com facilidade !

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ao servidor.

Em nenhum lado podes aceitar um executável. Correr um executável numa máquina, por mais black-box que seja, é um risco que não se pode correr.

Existem duas soluções:

A) Código sempre client-side, ou seja, hora para duelo, ambos de ligam ao servidor por sockets, e enviam os comandos (ou seja, o servidor recebe os comandos, o processamento é feito pelos clientes) - tem-se que decidir se é jogado por turnos/realtime, sem esquecer o problema do ping etc.

;) É enviado o código, é compilado, e são colocados os programas a correr dentro da mesma black-box. A diferença entre ser enviado o código e compilado ou ser enviado um executável está que tu podes controlar o que cada programa faz. Se for em C, podes por exemplo bloquear o uso de certas funções ou bibliotecas. Por aí fora. Fica com um sistema idêntico ao dos concursos de programação.

Se a ideia for essa, o mooshak já está implementado para C, C++, Pascal e Java, pode ser que ajude na parte do código:

http://www.ncc.up.pt/mooshak/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho a ideia B mais aliciante. Impede o problema dos vírus e permite o envio do código o que resolve imensos problemas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho a ideia B mais aliciante. Impede o problema dos vírus e permite o envio do código o que resolve imensos problemas.

Se o servidor for feito e estiver a correr em ambientes UNIX esse problema não se põem. Nem sei qual é o problema, existem muitos servidores na net que são executáveis e estão a correr e nos nem damos por isso.

Quanto à ideia, vou aguardar pelo desenrolar da ideia... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho a ideia B mais aliciante. Impede o problema dos vírus e permite o envio do código o que resolve imensos problemas.

Se o servidor for feito e estiver a correr em ambientes UNIX esse problema não se põem. Nem sei qual é o problema, existem muitos servidores na net que são executáveis e estão a correr e nos nem damos por isso.

Quanto à ideia, vou aguardar pelo desenrolar da ideia... :P

Como por exemplo? Sinceramente nunca vi nenhuma página onde pudesses enviar um programa (executável) e ele fosse corrido.

0

Partilhar esta mensagem


Link 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