sábado, 28 de janeiro de 2012

BATATA!

Não, não me refiro ao alimento, é apenas uma expressão que várias pessoas utilizam quando querem dizer EUREKA!

Hoje, agora pouco, de manhã, fui na empresa onde o Marcos trabalha. Havia negociado com ele já, e então, fui lá pra ver se o Input-Repeater iria funcionar!

Mandei ele baixar o programa de nosso link secreto, e ele baixou. Em seguida, ele ligou o programa, clicou em “RECEBER” e aguardou. Logo depois, liguei o meu programa, cliquei em “ENVIAR” e digitei o IP do computador dele. Batata! Deu certo, até ele mexeu um pouco no programa, experimentou, e até jogou Angry Birds! Vê se pode!

Então, a conexão está toda OK, só preciso agora acrescentar o sistema de detecção do teclado… Provavelmente, usando aquele sistema de bolinhas e colisões que mencionei a alguns posts atrás!

Até lá! <ô/

sexta-feira, 27 de janeiro de 2012

Vamos lá para mais alguns testes!

Acabei de me convencer que meu programa não está com bug, e sim o Windows. Heh!

Sendo assim, resolvi entrar em contato com os outros membros da Vincio Studios para me auxiliarem nessa missão impossível, que é testar o Input-Repeater em um lugar onde eles possam controlar simultanemanete DOIS computadores.

Vamos ver quantos deles conseguem testar e quantos não conseguirão! Até lá! <ô/

quinta-feira, 26 de janeiro de 2012

Quando menos se espera, as coisas acontecem!

Bem, ontem à madrugada, vou confessar que o sono me derrubou. MAS, junto com o sono, veio um bug dumal no programinha de acesso remoto. Simplesmente os dois programas (O receptor e o enviador) pararam de funcionar do nada. Um não consegue localizar o outro, mas se os dois forem executados no mesmo computador, eles funcionam.

E olha que antes estava funcionando normalmente a conexão entre eles! Mas, já verifiquei firewall, já verifiquei anti-vírus e etc etc etc etc etc, mas tudo está TEORICAMENTE certo. Tem algum detalhezinho. Provavelmente é a minha rede fubeca-a-fubeca que tá mal-configurada. Tô tentando pensar numa forma fácil e prática de fazê-la funcionar normalmente, sem “tantos” problemas… Mas, pra ser sincero, eu nunca gostei dela mesmo!

Quaisquer idéias pra ajudar, fico grato! Até a próxima! <ô/

quarta-feira, 25 de janeiro de 2012

Problemas, problemas, problemas…

Então, ao analisar um pouco algumas DLLs de envio de comandos e tal (até achei uma que consegue simular o botão 3 do mouse perfeitamente, tanto pressionando quanto soltando, e até mesmo a rolagem), notei que todas as que prometem simular teclas sendo pressionadas se limitam a isso: A simular as teclas serem PRESSIONADAS.

“Mas, qual o problema então, Leo?” – Simples: Eu preciso de uma que não mande apenas um “raiozinho” de comando. Eu preciso de uma que seja capaz de detectar enquanto eu estiver pressionando a bendita tecla, atééé o momento de eu soltá-la. As DLLs somente mandam um pequeno “pulso”, mas nada de “segurar” a tecla. O GM possui o recurso de detectar se a tecla está sendo pressionada ou não nativamente, mas para cada tecla é um comando diferente… Não sou nem louco de colocar +- 100 comandos diferentes pra transmitir em rede e em tempo real… tsc tsc tsc…

Sendo assim, vou ter que apelar: vou ter que montar um “layout” de teclado no programa, sendo que cada tecla é um objeto. E, as teclas serão apenas acionadas por algumas “bolas” que, ao entrarem em colisão com as tais teclas, elas vão fazer o comando de PRESSIONAR e, ao sair da tecla, faz o comando de SOLTAR. Ficará mais fácil assim, pois desse modo, me preocuparei apenas com coordenadas x e y dessas “bolas”.

Ninguém aperta mais do que 5 teclas ao mesmo tempo (Aquele que aperta, que atire a primeira tecla!), então 5 bolinhas já serão o suficiente. E, como cada bolinha usará coordenadas x e y, então são 10 índices de rede no máximo. Até o momento, estou usando apenas 5 índices: Coordenadas x e y do mouse (0 e 1), botão esquerdo (2), botão direito (3) e botão do meio (4). 15 índices ainda manterá a conexão rápida e em tempo real, apesar de que, segundo meus cálculos, será meio difícil de digitar um texto usando esse recurso, pois as teclas podem sair rápidas demais e o método não detectar essas “teclas-relâmpago”…

Então, simbora programar. A madrugada promete! Até lá! <ô/

Quase pronto!

Rá! Lembram do probleminha lá da conexão remota do PC ao notebook? Pois trago boas notícias: Aquele probleminha do mouse foi resolvido!

Então, como eu ia dizendo, a solução foi a seguinte: Criar um programa cujo foco NÃO É obter total acesso ao computador remoto, e sim, apenas enviar as instruções de MOUSE para ele! Confesso pra vocês que não foi tarefa fácil, principalmente pelos vários empecilhos encontrados no meio do caminho. Vamos lá…

Primeiramente, fiz um layoutzinho tosco, mas funcional:

screen1

Em seguida, fiz com que o pontinho vermelho acima detectasse apenas a movimentação do mouse, não a posição dele. Até aí tá moleza. Depois, é claro que o mouse nosso, visando que o programa irá enviar apenas a movimentação do mouse e não coordenadas x e y exatas do cursor, então o mouse na origem tem que estar “travado” no centro da tela, e a partir dessa travada que o ponto vermelho obtém a movimentação. Até aí susse no musse, principalmente a questão de uma combinação de teclas para “destravar” o cursor, caso haja alguma emergência.

Mas aí que veio o primeiro problema: A conexão TCP/IP com o outro computador.

Após uma lida rápida no help do Game Maker, deu pra relembrar como se faz os procedimentos de conexão usando os recursos nativos do Game Maker. (Calma, programadores, eu sei que vocês estão dizendo agora nas suas mentes para que eu use a 39dll ao invés da nativa. Bem, isto está nos meus planos, assim que eu aprender a mexer com ela!) O único detalhe é que, adivinha se deu certo? Bem, acertou quem disse NÃO!

Eu já tava arrancando os cabelos, executando o projeto várias vezes em modo debug tentando entender o que houve, mas aí que percebi que o computador remoto não consegue se conectar no host se ele não BUSCAR os hosts disponíveis. Resumindo: Era uma única linhazinha de código. Problema 1 resolvido!

Eu queria ter tirado uma foto quando vi que o cursor no meu PC já estava se movimentando de acordo com os meus comandos de movimentação no notebook, até que eu tentei fechar uma janela no PC… E, pra minha surpresa, nada aconteceu. Mas, por quê? Porque o GM não tem suporte à simulação de cliques do mouse nativamente. Isto é, tive que correr atrás de DLLs pra isso!

Uma vez eu havia baixado uma tal de MouseSolution, mas como não achei tutoriais para ela, deixei ela de lado.

E dê-lhe ver como um louco uma outra dll e, para isso, recorri ao meu bom e velho amigo www.gmtoolbox.com!

Primeiramente, tentei usar a MouseController. Péssima idéia, porque a dll está desatualizada (Game Maker versão SEIS!!) e, ao dar o primeiro clique, simplesmente o mouse “entra em curto” e fica clicando sem parar, numa velocidade absurda.

Segundamente, fui ver a Mouse Simulation DLL, mas o arquivo de download expirou. Mediafire maldito!

Terceiramente, achei a MouseSolution. Mas, como não encontrei tutoriais para ela, fiquei com medo de usá-la e deixei ela de lado.

E por fim, mas não por último, achei a MouseControl DLL, mas para a minha sorte, o link de download dela havia expirado também. Mas, para o meu azar, no tópico da dll, o criador dela postou uma “versão corrigida às pressas” dela num site muito bacana chamado UpUrLoad. Baixei a bendita, e fiquei surpreso com o  tanto de ações que haviam!

Apenas as funções de pressionar e soltar botão esquerdo e direito já eram suficientes! Tava bão demais! Só depois que notei que o mesmo não possui essas funções para o botão do meio, mas o clique do botão do meio já está muito bom! É uma pena que também não tenha reconhecimento da roda do mouse… Em vários FPS, é muito útil.

Em seguida, dê-lhe reformular o código novamente com essa nova DLL mas, para minha surpresa, não calculei a lógica da rebimboca da parafuseta corretamente e, sendo assim, a DLL deixava o mouse louco, clicando com todos os botões ao clicar com um botão só. Locãodasidéia, né?

Um pequeno remendo aqui e outro ali e PRONTO! O mouse agora se mexe remotamente E CLICA remotamente! E eu posso clicar e arrastar qualquer coisa com ambos os botões! Ficou lindo, lindo, lindo. (como diria meu irmão!)

Aí você pensa: Problema da conexão do notebook ao PC RESOLVIDO? Pois é aí que você se engana.

Bom, como sabe, o Ultr@ VNC controla MOUSE também, além do teclado. E o controle de MOUSE dele é de coordenadas, não de movimento. Sendo assim, usar o meu programa em conjunto com o Ultr@ VNC está totalmente fora de cogitação, nenhum dos dois vai funcionar. OU SEJA, eu vou ter que achar agora uma DLL ou alguma macumba que faça com que consiga ler quais teclas estão sendo pressionadas e, enviá-las ao computador remoto.

O meu programa vai ficar igual um programa de acesso remoto, com a desvantagem de poder VER o que está acontecendo no outro computador, mas é bem essa a idéia! São 00:03 agora, termino essa postagem morrendo de sono, com 3 monitores na minha frente, com uma p*t* vontade de jogar alguma coisa, mas não posso porque tenho que me empenhar nesse programinha!

Amanhã eu posto o que que deu de resultado dessa muvuca! Até lá! <ô/

O cúmulo da frustração

Recentemente, tive uma idéia bizarra até por demais: E se eu pudesse controlar o computador de casa com meu notebook? Calma, eu sei que não parece ser tããããão bizarro, é apenas acesso remoto mas, vou explicar (e, desculpa pelo post comprido!):

Aqui em casa, tenho o meu computador (com placa de vídeo e tudo mais) cujo o qual uso para divertimento alheio. Pois bem, no outro cômodo, temos a sala. Na sala, temos uma TV 42", cuja qual possui 2 entradas HDMI. E, tenho também o meu notebook, o qual faço tudo e mais um pouco (menos jogar jogos fodões, pois o bichinho não aguenta).

Sendo assim, primeiramente, eu conectava o notebook na TV, para usufruir de alguns joguinhos bacaninhas e tals. Até que, então, ficava me mordendo pois não tinha como jogar aqueles jogos FODÕES na TV, porque o bendito do noteba não aguenta e pá. Até o dia em que tive a brilhante idéia de tirar o computador do lugar e colocá-lo do lado da TV pois, para minha surpresa, havia uma bela duma saída HDMI na placa de vídeo cuja qual eu nunca havia notado, mas tudo bem. Fiquei tão vislumbrado que até chamei o Marcos aqui em casa para jogar algumas partidinhas de FlatOut 2. Coisa de loco!

Então, no dia seguinte, comentei com meu pai sobre o feito e, conversei com ele sobre a viabilidade de fazer um pequeno orifício na parede para passar o cabo HDMI para o computador (já que, tecnicamente, ele fica atrás da TV!) e assim, podermos vislumbrar esse feito novamente sem precisar tirar o PC do lugar. Ele disse que é complicado, porque a casa é alugada e etc etc etc.

Mas, para minha surpresa, quando cheguei do serviço no horário de almoço, lá estava a TV virada um pouco, com um belo dum buraco na parede, feito sob medida para passar o cabo HDMI, o qual já estava no lugar! Olha que maravilha!

Desde então, tudo ficou mais “nítido”! Agora é filme quase toda semana! Só tem um pequeno detalhe: Só dá pra jogar com Joystick… E com duas extensões USB, pro Joystick chegar nos sofás… (Sério, ele tem que dar a volta pela parede!)

Mas, esse martírio iria durar até ONTEM (eu disse IRIA porque, já explico!), pois tive essa brilhante epifania: “Se eu usar acesso remoto, eu poderia controlar o PC deitado no sofá e vendo o que estou fazendo na TV”!

E, sem demora, comecei a procurar alguns programas de acesso remoto. Primeiramente tentei o do Windows mas sem sucesso, pois ele não acessa um usuário que já está em uso.

Em seguida, tentei usar o ShowMyPC mas sem sucesso também, devido a eu não ter consigo fazer ele conectar EM REDE, sem precisar passar pela internet. Resumindo: LAAAAAG.

Mas aí descobri o incrível e revolucionário Ultr@ VNC, que dá prioridade aos comandos impostos ao outro computador, podendo conectar EM REDE e mais: sem precisar dar muita prioridade para a exibição de vídeo!

O resultado, bem, foi surpreendente! Enquanto a tela do notebook ficava em 8 bits de cores preto-e-branco, os comandos respondiam muito bem, apenas com um ou dois lagzinhos devido à conexão de rede sem-fio ponto-a-ponto que uso em casa, mas mesmo assim, supreendente! Testei FlatOut 2 e o mesmo funcionou perfeito (tirando a pecinha que fica atrás do volante, claro)! Mas o pior de tudo ainda estava por vir…

Aí comecei a me frustrar quando pensei “Nossa, agora vou poder jogar Duke Nukem Forever, Skyrim, Rage, Wolfenstein, Minecraft, Star Wars Dark Forc… Não… NÃO… NÃÃÃÃOOO!”… Pois é, minha reação foi mais ou menos essa quando vi o erro gigantesco que ocorre com o MOUSE quando se tenta controlá-lo por acesso remoto enquanto roda um programa no computador destino cujo qual SEGURA o mouse no meio da tela. Resultado: Simplesmente o Duke Nukem não conseguia olhar pra frente, só pra cima e pra baixo, enquanto girava a 1400 km/h. E assim, o mesmo com o B.J. Blazkowicz… E com o Kyle Katarn… E com o Steve… E com os meus personagens do Rage e do Skyrim… E tantos outros FPS’s e/ou jogos que seguram o mouse no meio da tela, para que o MOUSE LOOK funcione corretamente.

Fiquei p*t*. Fui dormir irritado, chutando as coisas que via pela frente… Era como se a vida tivesse perdido o sentido para mim! Mas, havia perdido ATÉ AGORA POUCO, ONDE TIVE UMA IDÉIA VISLUMBRANTE!

Qual é a idéia? Não vou contar! Aguardem até a próxima postagem onde, provavelmente, será a respeito da idéia. Com link de download ainda!

Até lá! <ô/

Inauguração!

Muito bem… Mais uma vez, cá estou eu abrindo mais um blog… Mas, dessa vez vai ser diferente! Porque dessa vez se trata da Vincio Studios!
Isso mesmo. Agora, aqui eu não vou postar coisaradas sobre a vida, sobre alguma coisa que um garoto random de 15 anos esteja revolteds-boy sobre, algo que perca totalmente a noção do ridículo e etc etc etc, ou seja, este é um blog profissional, onde eu e a equipe da Vincio Studios falaremos sobre as atuais idéias e bla bla bla bla bla, capiche?
Então, subam na nave Vincio e vamo que vamo! <o/