sexta-feira, 23 de dezembro de 2011

Estudar aplicação ou linguagem de programação?

Aconteceu comigo, e acho que deve acontecer com a maioria dos desenvolvedores, o momento onde aprender novas linguagens de programação não me permite resolver problemas que eu não resolvia antes, até porque a maioria das linguagens mainstream vivem copiando recursos umas das outras.

Mas então, como eu vou continuar progredindo para programar a Matrix? Simples, desenvolva programas que você nunca fez, e aconselho você a usar a linguagem e ambiente mais produtivo que estiver a sua disposição. Por exemplo, eu sou um aspirante à desenvolvedor de jogos, já tentei muita coisa, desde C com Allegro, XNA/C#, até C++/OpenGL, e acabou que o único ambiente que tinha uma boa IDE e me permitia experimentar coisas rápido foi a AS3 do flash no FlashDevelop.

Este é um ponto crucial que muita gente costuma ignorar, a IDE. A linguagem de programação é grande parte do pipeline de trabalho, mas não é o pipeline inteiro, para se ser produtivo e fazer as coisas sem se sentir frustrado, o ambiente inteiro precisa ser rápido e te ajudar a cometer menos erros.

Se você quiser ser um melhor desenvolvedor, terá que se arriscar aprendendo a programar novos tipos de aplicações, sejam elas, desktop, web, interativas, de inteligência artificial, ou até mesmo controle de estoque, caso você não tenha feito um. E este nível de granularidade pode diminuir cada vez mais, por exemplo, você é um programador de sistemas web php. Crie uma limitação fictícia onde o seu cliente terá milhões de pageviews diários e o código precisa ser todo escrito em C++. Ótimo, agora você precisa aprender a fazer um web server. No final do processo, vai entender muito mais sobre suas páginas php e poderá pegar projetos muito mais ousados.

Enfim, o bom programador programa qualquer coisa em qualquer linguagem. Até hoje me impressiona os jogos de Super Nintendo e Megadrive terem sido feitos em Assembly, assembly... Eu sempre uso este fato como fator motivacional para continuar aprendendo, por que se eles fizeram aquilo tudo em Assembly, qualquer coisa é possível em Linguagem de Alto Nível Cool da Moda.

Mas não deixe de aprender novas linguagens de programação, ainda mais se elas forem de algum paradigma que é alienígeno a você, no meu caso estou me aventurando aos poucos no paradigma puramente funcional através de Common Lisp.

terça-feira, 20 de dezembro de 2011

Achievements list for the game programmer

CHECK:  You coded everything
SEMI-CHECK: You used some engine

  • "Guess the number" / Hangman (basic interface, select data from a database) CHECK
  • Tic-Tac-Toe / Rock-Paper-Scissors (turn-based gameplay, opponent AI) CHECK
  • Arkanoid / Pong (collisions, stable frame rate, score, levels) SEMI-CHECK
  • Tetris (data structures and how they relate to gaming)
  • 1942 / Shoot-em-up (enemies, bullets)
  • simple platformer / pinball game if your engine does platformers (gravity-based collisions) SEMI-CHECK
  • Bomberman / Pacman (tile-based movement, complex enemy AI)
  • Two-player game of any of the types above (two player inputs) CHECK
  • Roguelike / Diablo (Inventory management, multiple enemy AIs, saving and loading complex game states)
  • Faceball / Wolfenstein 3D (basic 3d movement and rendering)
  • Network turn-based game (basic networking) CHECK
  • Gimmicky 3D third-person platformer (physics, complex 3d movement)
  • Network real-time game (Client-server synchronism, lag)
  • MMORPG (Persistent world)
What's your list like?

domingo, 18 de dezembro de 2011

Metamorphosis

Inspired in Kafka's Metamorphosis

Our entry to Ludum Dare 48 jam.
Done in 45 hours.

Please, play the game on Kongregate, Metamorphosis


Art by Pedro Perim
Programming by me