terça-feira, 29 de dezembro de 2009

Playing around with cyberclay (a mimetic polyalloy)!








So I got the word (from TIGSource) that a cool freeware sculpting tool came out, Sculptris, by the same guy who made the coolest sound generator tool sfxr, and took some time off working in the "physics response" coding lab for the game engine, to give it a go. It's pretty cool, reminds me a bit of ZBrush's sculpting mode but has a few more interesting features (such as adding geometry where details is being added), is much easier to get into and do cool stuff, and all this for free!

sexta-feira, 25 de setembro de 2009

Xml-style game loading

How are you gentlemen

After continuing the process of adding features to the Engine in order to allow the building and playing of a basic Pong game, i came to the point where i wanted to have the whole thing loaded from an external xml file.
So i've spent the past 2-3 weeks designing a way to parse xml files and load the appropriate objects into the game, which has been quite a challenge because

1. writing xml file parsers is kinda boring
2. took a bit of code refactoring (to allow incremental construction of an Object - define an empty game entity and add modules to it as they are read from the file)
3. adding the feature to inherit properties from an object (kinda like inheritance in object oriented design)

So after testing loading a few basic entities from the xml format and playing with configuring them in different ways from the xml file, i'm now beginning to add all the available tags to fully allow the definition of the game in xml format. More uncreative and repetitive code, but necessary to have great big fun with it later :)

sexta-feira, 22 de maio de 2009

May News Update

So here's the current state of affairs: the game engine has reached a point where there still is a lot missing from it, but some basic gameplay can be designed. So i've started to do some old-school basic games, and keep building the engine as the games require, and generalize from that (i think it's good practice to design around the necessary game requirements instead of over generalizing the engine, which tends to make it in a state of never being complete).

I've started with Pong, which interestingly has a few somewhat advanced features that some modern games don't even use, such as collision detection and dynamics (ball/paddle speed), and causes me to add stuff to the engine that i may have missed in design or underdesigned.

I hope to post these first efforts soon :)

It's rewarding to finally see (after some months of working on it) how easy the game engine allows to quickly come up with a game prototype, edit and change stuff, instead of always having to rewrite the game scratch. Also, as the engine design was broken into modules, it's fairly easy to pick up where i left off the past week (since i work on it mostly at nights, sometimes a week or so will go by without having time or energy to do coding)

Next up will be Tetris! Yay :)

First sketch of the title screen:
Pong prototype menu screen

Screen cap of the current game main screen state of the game:
Photobucket

sábado, 28 de março de 2009

Actualização Noticiosa - News Update

Jump to English Version

Boas, pessoal! Aqui vão notícias sobre aquilo que tenho andado a fazer.

Tenho estado a trabalhar num "motor" de jogos, que me permitirá produzir vários jogos partindo de um programa comum, reduzindo o esforço de reimplementar tarefas comuns para cada jogo. O motor aproximar-se-á mais de um ambiente de desenvolvimento de jogos completo, e menos de uma "framework" em código sobre a qual se implementa mais código, procurando oferecer o maior número de funcionalidades possível para desenvolver qualquer jogo (para já, apenas baseado em "sprites", ou imagens 2D, não suportando ainda 3D real, mas permitirá uma série de truques para simulação 3D).
Resolvi seguir uma abordagem de uma ideia que me surgiu depois de ler este post ("Three Hundred Mechanics - #004 - Environment Tree"), quando tiver avançado mais o desenvolvimento explico o funcionamento interno do programa em maior pormenor. O código está a ser desenvolvido em C++, utilizando a biblioteca de jogos "Allegro", e outras para carregamento de formatos de imagem.

As principais funcionalidades que oferecerá serão:
  • separação entre lógica de jogo e código, para configuração desta durante o curso do jogo ("run-time")
  • definição de toda a estrutura de jogo a partir de uma estrutura hierárquica (armazenando o "jogo" num ficheiro com estrutura baseada em XML).
  • características frequentes em jogos:
    • gráficas
      • definição de modelos visuais de jogo ("side-scroller", isométrica)
      • efeitos gráficos ("scrolling", zoom)
      • aceleração gráfica por hardware
      • gráficos "raster" ou vectoriais
      • definição de GUIs.
    • Acções úteis na implementação de inteligência artificial (linha de visão, navegação baseada em percepção do ambiente)
    • Modelos para detecção de colisão/física simples ou newtoniana.

Algumas destas funcionalidades estão já implementadas, outras estão em curso disso, e algumas estão ainda a ser pensadas. Mas quando estiver tudo, vai ser bastante porreiro, e vão sair daqui uns jogos interessantes :) alguns dos quais já tenho pensados há bastante tempo e têm de ser feitos!

Ocasionalmente trabalho em pixel-art, ou faço uns modelos 3D (tudo nos tempos livres, o emprego não permite mais). Aqui estão algumas das coisas que posso mostrar (cliquem para ver ao pormenor):
Hand (Wings 3D)
Face - Wings


(english version)
Hey guys! Some news on stuff i've been busy with.

I've been working on a "game engine", which will allow me to produce different games using a single program, reducing the effort of reimplementing tasks which are common between games. The engine will be more of a development enviroment than a code framework on which to further code upon, and will provide a large feature list, allowing to develop (almost) any sprite-based game (only 2D sprite-based for now, some 3D effects can be simulated, but "real" 3D isn't really in the plans right now).

The engine will follow a paradigm based on an idea that came to me after reading this post ("Three Hundred Mechanics - #004 - Environment Tree"), when development is further advanced i'll post more information on how it works. Right now, i've been coding in C++, using the Allegro game library, and several libs for image format handling.

The main engine features will be:
  • separation between engine code and game logic, allowing logic configuration during game run-time
  • definition of a full game using an hierarchy structure (storing the "game" on a XML language based file).
  • frequently used game features:
    • graphics:
      • selection of the game's visual mode ("side-scroller", isometric)
      • graphical effects ("scrolling", zoom)
      • hardware acceleration
      • "raster" or vectorial graphics
      • GUI construction support
    • Useful agent actions for Artificial Intelligence implementation (line of sight, environment based navigation)
    • Collision Detection/Physics: simple or advanced (newtonian) models.

Some of these features are already implemented, others will be later, some requiring further thinking, but when it's done, it'll be pretty neat, and some interesting games will come out of it :) (some of which have been planned for quite some time, and must be done!)

Occasionally i'll do some pixel-art or 3D models for fun, all in spare time (my job allowing). Here are some incomplete 3D stuff i've been working on, click for bigger size:
Hand (Wings 3D)
Face - Wings