sexta-feira, 31 de julho de 2009

Estrategias para Expansão dos jogos em Linux.

Já há algum tempo tenho pensado em como alavancar o uso dos jogos em Linux e vamos começar pensando Os jogos são essenciais para crescimento do Linux ? Penso que sim. da mesma forma que os aplicativos de escritório também são e nisto o Linux já possui qualidade e renome igual ou superior a varios concorrentes e mesmo assim muitas empresas não deixam de utilizar (mesmo com versões em windows) os seus aplicativos pagos para utilizar o OpenOffice por exemplo. o aspecto mais importante que falta no Linux(open source em geral), e que muitos aplicativos comerciais possuem é o fato de causar a sensação de desejo e as vezes até um desejo ardente, este desejo tem um motivo. e é exatamente o que temos que descobrir para criarmos nossos jogos ou seja. "O porque de tais jogos serem desejados".
Por exemplo. Alguns usuarios trocaram suas distribuições pelo Ubuntu (eu fui uma delas) pelo simples desejo de ter um desktop 3d funcionando de maneira facil (no kurumin dava muito, mais muito trabalho no começo tanto que desisti) e parte do que o Ubuntu tem tentado trabalhar é isso , os desejos que as pessoas nutrem pelo sistema. desejo tal que algumas trocariam até mesmo certos confortos por essa substituição. Eu falei tudo isso para chegar ao seguinte ponto. os jogos só trarão usuários para o Linux se as seguintes condições forem satisfeitas(Desejos).

1) Jogos melhores que em outros sistemas (tanto em gráficos e desempenho , quanto em diversão)

2) Disponibilidade , os jogos tem que simplesmente abrir quando o usuário acredita que eles tem que abrir. Ou seja sem nenhum problema de instalação ou travamentos.

3) Os jogos tem que ter apelo popular ("nossa vc viu o novo jogo da xyzGamersFantasy, cara todo mundo vai querer esse jogo, porque é animal") ou seja alcançar o cliente final.

Legal então apenas com estes três requisitos conseguimos alavancar os jogos no Linux e então como que eu faço isso .

Bem para chegar a este ponto nós precisamos trabalhar com o sistema que eu chamo de rede 3D.
que envolve o desenvolvimento dos jogos, a distribuição e a difusão dos jogos.

Os 3Ds também possuem diversos requisitos e tais que não há como enumerar todos, porém vou focar nos principais.

1)Desenvolvimento – Os jogos tem que ser fáceis de serem produzidos e alcançar grandes resultados em desempenho e gráficos e possuírem um menor custo de produção.

Dentro desta características fica claro uma grande diferença entre produzir jogos para Linux e outros sistemas que não possuem tanta facilidade para produção porem possuem maior incentivo tanto financeiro, quanto uma questão mercadológica básica que é a quantidade de consumidores.
Uma empresa que vê um concorrente vendendo cem mil copias de um jogo que recebeu pontuação em gráficos mediana e vê a possibilidade de produzir gráficos melhores vai investir mais para obter maiores resultados focando pelo menos retorno equivalente as cem mil copias que o concorrente vendeu.


2)Distribuição - Os jogos tem ser distribuídos de maneira rápida fácil abrangente barata e principalmente segura (proteção contra copia ilegal) este aspecto envolve inclusive a instalação do jogos na maquina do cliente para que ocorra apenas o “just push start”.

Dentro de um ambiente como o open source onde possuímos vários especialistas(Hackers) o sistema de distribuição pode ser um ponto extremamente arriscado para qualquer desenvolvedor. Jogos são exclusivamente capital intelectual e este precisa ser protegido para que o desenvolvedor obtenha o retorno do investimento. Exemplo um jogo open source de MMORPG que tivesse apenas um servidor para joga-lo sem nenhuma chance de criação de servidor concorrente é altamente lucrativo para o desenvolvedor porem diante de tantos Hackers/m² que possuímos no ambiente open Source (Linux) esta tarefa é quase que impossível. pois rapidamente alguem criaria outro servidor, colocando o investimento em risco.

3)Difusão dos jogos no Linux –. Distribuições Linux devem vir já com o melhor dos jogos para Linux por padrão instalados. Outro aspecto determinante é que os jogadores tem que participar do ambiente de produção dos jogos.

Este ponto depende de alguns atores-chave para o seu fator de sucesso e os ambientes como KDE e Gnome tem de rever seus jogos para que uma pessoa que que é considerada "Gamer" não sinta o Linux tão atrasado ou inferior no aspecto jogos logo na primeira impressão que tem do sistema. Pensem cada vez que você instala uma distribuição nova você tem varias novidades e recursos adicionais nas diversas áreas que envolvem o uso do computador porém ao entrar na areá de jogos para passar uma pequena parte do tempo você descobre que não conseguira ficar tampo tempo jogando tais jogos que parecem da década retrasada (não são de qualidade ruim porém em sua maioria simples) portanto as vezes é melhor só ficar olhando uma barra de instalação do sistema enchendo do que passar algum tempo jogando. imaginem que primeira impressão do Linux fica marcada naquele jogador que tenta apenas experimentar o Linux.



Possíveis Soluções.


Desenvolvimento

As soluções são as mais diversas possíveis eu apenas irei chamar a atenção para algumas que vejo como as promissoras e gostaria de receber mais sugestões.

Blender – o blender é uma ferramenta de desenho 3D(modelagem) que possui um recurso que poderá mudar o rumo dos jogos em Linux que é a game engine. Ta bom eu sei que o proposito principal do blender é o desenho e não a interação ou jogos, porém com esta ferramenta você praticamente precisa de designers e de poucos programadores e o nível de gráficos será com absoluta certeza muito acima do que se pode esperar em alguns dos jogos comuns de Linux, o que falta no blender é que a game engine receba um especie de game factory onde recursos voltados para jogos sejam mais explorados e melhorados inclusive a possibilidade de rodar o blenderplayer sem que seja necessária a instalação do sistema de modelagem, e os pacotes de jogos sejam únicos semelhante as roms que existem em jogos de emuladores, o que facilitaria em muito o desenvolvimento e facilidade na manipulação dos jogos, ja as bibliotecas da game engine (ou blenderplayer) cuidassem daquilo que é familiar a todos os projetos (bibliotecas para rodar os jogos como a fisica, iluminação e efeitos) deixando apenas a cargo do game design a elaboração de visual, logica e interação.
XNA – Aqui não vou falar exclusivamente da ferramenta XNA para Windows, mas da possibilidade de compatibilizar os jogos feitos para windows rodarem no Linux nativamente através de um desenvolvimento já com esse proposito (Mono talvez) feito para um mercado atual e aproveitando o pinguim, portanto é apenas uma alusão a uma forma de desenvolver jogos usando os métodos que já estão “fazendo sucesso” no mercado são mais faceis de usar do que programação convencional, estão integradas há um ambiente de programação. De forma que caso houvesse uma ferramenta semelhante no Linux facilitaria em muito o processo de desenvolvimento.



Distribuição

Nesta área a mídia ideal no Linux para distribuição de software, sem duvida nenhuma é a internet e os processos de degustação de jogos (Versões Teste) e a aquisição do produto, tem de ocorrer de forma totalmente segura sem que qualquer especie dificuldade para ambas as partes principalmente para os jogadores ocorram.
Em sua maioria, jogadores querem começar apenas com “just push start” e depois que o jogo começar ai sim você pode ter diversas opções de configuração e personalização para que ele perca tempo ou paciência trocando e afinando a performance. O processo de aquisição de jogos via internet tem que de resumir-se a um arquivo que o jogador possas baixar sem necessidade de saber o que tem dentro dele (Jogos Comerciais) e de roda-lo ou instalado em apenas dois cliques e um OK(Semelhate ao .Deb) e se possível após a instalação já perguntar se o mesmo deseja jogar seu jogo o que vai permitir saber se o mesmo ira funcionar perfeitamente logo na primeira oportunidade de faze-lo.
A respeito deste processo de aquisição de jogos só há uma alternativa para a segurança do conteúdo intelectual investido no jogo que é a criptografia do mesmo e o processo de criptografia deve ocorrer de maneira tão transparente que este seja se quer mencionado durante o processo (ainda mais pela palavra criptografia que pode assustar alguns) cada jogador deve ficar apenas ciente que possui uma chave única e intransferível e que seus jogos vão ser jogados apenas em seus sistemas e que nas licenças de uso determinem que não há possibilidade de troca de chaves. E caso ocorra a troca de chaves os arquivos(jogos) estarão inutilizados sendo para proteção do desenvolvedor.



Difusão dos jogos.

Difundir os jogos entre os jogadores sem mídia comercial é a tarefa mais difícil em um ambiente open source, portanto o "Power Up" para que os jogos sejam difundidos entre os jogadores é a criação simultânea de comunidades de manutenção/sugestão do projeto de jogo junto aos jogadores ( principais interessados ) para que seja possivel entender as necessidades , dificuldades , motivações , e escolhas dos nossos clientes finais, e devem estar no topo de prioridades do projeto tais necessidades , dificuldade , motivações e escolhas de forma que sejam constantemente atualizadas e a liderança de um projeto de jogos deve estar pronta inclusive para passar o destino do projeto para as mãos da maioria (clientes finais). caso algumas requisições dos jogadores saiam do escopo devem ser criadas rotinas (forks , demos , períodos de testes , regiões de testes) para uma analise mais profunda dessas requisições. E com crescimento do publico haverá uma grande possibilidade da perpetuação do jogo. Onde mesmo que lideres do projeto sejam trocados a ideia que esteja sendo desenvolvida pelos próprios jogadores ou novos game designs tenha continuidade.



Este post é apenas um esboço do que pretendo chamar de estratégia para expansão dos jogos em Linux quanto mais comentários forem feitos melhor e mais claro pode ficar este conceito.

Creative Commons License
Estrategias para Expanção dos jogos em Linux. by Ulisses Cavalcante is licensed under a Creative Commons Atribuição-Compartilhamento pela mesma Licença 2.5 Brasil License.
Based on a work at uziel7.blogspot.com.

domingo, 26 de julho de 2009

Video Tutorial: instalando Oracle no Ubuntu


Aki eu apresento um video passo a passo da instalção do Oracle 10.2.0.1 no Ubuntu 9,04 mostrando que os pacotes .deb são mais faceis de instalar do que um aplicativo de Windows e digo isso com base em uma coisa todos os aplicativos .deb vc sempre instala dando dois cliques apertando o botão instalar, em alguns é necessario olhar na janela de terminal se há alguma recomendação porém são pouquissimos, após o termino da instalação é so ir até o menu e usar seu programa. Aconselho quem tem curiosidade em aprender Oracle e sempre que possivel tentar utiliza-lo ele já vem inclusive com interface de operação via o web porem o segredo para domina-lo está na linha de comando, No Ubuntu ele tem um desempenho muito Bom principalmente se vc tiver uns 2 Gb de RAM ou mais.



Aki está o link para baixar o Oracle. Infelizmente não encontrei minhas apostilas mas quem tiver alguma pode postar.

Maquina usada na instalação.
P4 HT 3,0 Ghz nucleo Cedar Mill.
512Mb de Ram 1GB Swap
HD sansung IDE ATA 80 GB
Geforce FX 5500 256 mb

Ubuntu 9,04 Jaunty Jackalope

\o/\o/\o/ Oracle on Linux

sábado, 25 de julho de 2009

Novo Ubuntu terá Boot em 10 segundos.

Nossa os caras do Ubuntu já reduziram o tempo de boot da versão 8,10 para versão 9,04 pela metade agora na versão 9,10 eles dizem que querem mais! estão dizemdo que vao chegar a 10 segundos e em qualquer HD

Aki estão dois videos rodando as versões ALPHA ( versões de teste) tanto do Ubuntu(Gnome) quanto do Kubuntu(KDE4). Cara isso só porque a MS fez o win 7 dar Boot em 30 segundos tbm e o pior vão lançar a versão 9,10 no dia seguinte ao lançamento Oficial do win 7(22/OUT/2009).

Ubuntu 9,10



Kubuntu 9,10



Bom pelo menos quem nao tem grana ( incluindo eu) para comprar um win 7 so precisa esperar 24 HS para ter o linux mais popular do planeta. Até porque

“Quando você não tem Paredes… Não é necessário ter Janelas…”
“If you don't have walls... you dont need Windows…”

Bem, isto é constrangedor...

Nova tela de erro do Firefox 3.5.1 mostra um tipo de mensagem diferente do que estamos acostumados a ver nos programas convencionais.

Clique na imagem para aplia-la.
Aki nesta imagem você pode ver a nova tela de erro do firefox 3.5.1 , agora de certa forma mostrando um lado mais humano do sistema, ou talvez, uma pequena piada dos desenvolvedores. Comecei a rir na primeira vez que vi esta mensagem, parecia que era uma piada fiquei ainda alguns segundos parado olhando para ela pensando, parece um garoto que simplesmente não consegue chegar a tempo ao banheiro e acaba molhando as calças na frente dos pais.

E nesse caso especificamente o erro ocorreu devido eu ter aberto o firefox antes de conectar o modem 3G a interntet , portanto o problema nem era do firefox e ele já estava assumindo a culpa.
Isto é algo bem diferente daquale tão popular " Este programa executou uma operação ilegal e será fechado." que outrora viamos com tanta frequencia como na imagem abaixo sem nenhuma condição de identificar o que poderia ter ocorrido no programa.

A respeito da nova versão do firefox relmente senti uma pequena diferença na velocidade porém como o meu plano 3G é de 250 kbps não posso afirmar se realmente abre paginas na metade do tempo que a versão anterior. So fique incomodado pela troca do menu "Preferencias" que ficava em Exibir ter se tornado o menu "Opções" em Ferramentas

sábado, 11 de julho de 2009

Compartilhando uma variavel em C#

Olá gente estou iniciando em programação e escolhi o C# para comecar pois sua sintaxe me parece bem clara é uma linguagem nova com muitos recursos e principalmente por sua utilização multiplataforma pois ja consigo abrir meus programas em visual C# .net no ubuntu sem nenhum problema é so usar o mono para isso.

Bom ha alguns dias tive um serio problema ao fazer um programa e não conseguir usar uma variavel em uma outra janela procurei ajuda em foruns, blogs e até no msdn e não havia descoberto uma solução, então lendo a explicação no livro de passo a passo que eu comprei recentemente pude entender, o que estava errado era a maneira como eu declarei a variavel e instanciava a mesma.

o segredo é só voce declarar a variavel como static pois assim ela podera ser chamada de qualquer lugar do programa é necessario vc chama-la sempre com 'nomeDaClasse.variavelStatica' como no codigo abaixo para ler uma caixa de texto


public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}

private void btSalvar_Click(object sender, RoutedEventArgs e)
{
//instruçoes para atribuir o valor da textbox a variavel chamamos a 'classe.variavel'
classeArmazenarVariaveis.variavelTeste = int.Parse(campo.Text);
campo.Clear();
}

}



class classeArmazenarVariaveis
{
// a variavel deve ser do tipo public static para que ela possa ser compartilhada.
public static int variavelTeste;
}


Bom provavavelmente não é o melhor metodo pois eu sei que temos que fazer o encapsulamento para que a variavel fique protegida porém é o metodo mais facil que encontrei até agora. O codigo de exemplo completo e comentado você pode baixar no link abaixo.

http://www.4shared.com/file/117470256/74b2915b/InstanciarVariaveis.html





War for Peace (Theme of Bellato) - Lia

sexta-feira, 3 de julho de 2009

Instanciar Variaveis de uma Classe em C#

Ta bom galera eu sei que estamos de ferias e me desculpem pela enchessão, mas ja procurei pela internet ( e procurei muito) e ainda não encontrei a solução para um problema que acredito ser simples para desenvolvedores com maior experiencia ...
Sou novato em C# e a linguagem e que tive maior experiencia foi C ( como um hobby apenas) ou seja nada de orientação a objetos então estou esbarrando em um problema.
Eu tenho duas janelas e uma classe que possuem minhas variaveis. o meu problema é que não consigo atribuir um valor em minha janela 1 e depois ler a variavel na janela 2 pois o valor se perde e a variavel volta a ficar em null.
Escrevi um codigo demonstrando meu problema junto com o executavel.

Link para o fonte.
http://www.4shared.com/file/115835034/ed61043f/InstanciarClasses.html

desde ja agradeço. \o/\o/\o/


Bom não passou muito tempo e já descobri a solução para este problema maiores informações Aki neste post.