A comunicação mediada por computador como ferramenta de aprendizagem colaborativa.

1. INTRODUÇÃO

Segundo Polesel Filho (2001), a comunicação mediada pelo computador (CMC) possui diferentes funções: entretenimento, comércio, informação. É usada nas comunicações interpessoais, como meio de comunicação de massa, como suporte para fóruns e grupos de discussão, alcançando as mais variadas aplicações. No âmbito deste trabalho, estamos interessados em abordar a comunicação mediada por computador que parte de um indivíduo para um outro ou de um indivíduo para um grupo em relação a aprendizagem colaborativa.

Em seu trabalho “Estudos Sociológicos”, Piaget (Teixeira Filho) afirma que “cooperar na ação é operar em comum, isto é, ajustar por meio de novas operações (qualitativas ou métricas) de correspondência, reciprocidade ou complementaridade, as operações executadas por cada um dos parceiros.” Dessa forma, tenta-se desenvolver e estudar a CMC no âmbito da educação.

2. EMBASAMENTO

O trabalho de pesquisa centrou-se na análise de textos que pudessem proporcionar uma visão da CMC como instrumento de construção do conhecimento e de uma espécie de validação entre os pares da informação adquirida e refletida em um curso, seja ele presencial ou não.

3. OPINIÃO

A comunicação mediada por computador (CMC) assume um papel de extrema importância quando se dimensiona sua capacidade e rapidez na troca de informação, formação de opinião e troca de experiências. No âmbito educacional colaborativo, segundo Matos Coelho, a CMC designa troca textual (principalmente) interativa em redes de aprendizagem, que são constituídas por professores e estudantes, que se comunicam uns com os outros em tempo real, sincronicamente ou em tempos diferentes, seqüencial e assincronicamente.

Há várias formas desenvolvidas pela tecnologia em que essa troca pode ocorrer. Vejamos algumas, segundo o trabalho de Teixeira Primo:

1. e-mails: permite uma discussão assíncrona entre no mínimo duas pessoas, podendo expandir para várias. Certas mensagens não-verbais, como fisionomia ou entonação de voz não podem ser valorizadas em e-mails. Daí, surgem os emoticons, que oferecem pistas de como se sente o redator da mensagem.

2. Lista de discussão: é um serviço que recebe e distribui mensagens de todos os seus “assinantes”. Permite interações mútuas entre diversas pessoas. Permite discussões de muitos-para-muitos. São conhecidas como “comunidades virtuais” e dão a impressão que as pessoas se conhecem muito, mesmo sem terem jamais se encontrado.

3. Chats ou salas de bate-papo: oferecem um ambiente para a livre discussão em tempo real, ou seja, de forma síncrona. Oferecem um palco para diálogos de alta intensidade e para a aproximação de interagentes sem qualquer proximidade física.

4. Vídeo conferência: incorpora as vantagens do chat somando os recursos de emissão e visualização de imagens em vídeo dos interlocutores.

5. Quadro branco: trata-se de um programa que pretende simular o uso de um painel onde todos possam escrever e desenhar.

Em todas essas formas de comunicação, com exceção do e-mail de um-para-um, pode haver o papel do moderador, segundo Matos Coelho, tem seu papel identificado e relacionado com a forma com que os estudantes respondem e participam. O moderador tem o papel de motivar, não deixar dispersar e orientar em muitos casos as discussões. Possui um estilo pedagógico e funções organizacional, social, intelectual, técnica e a familiarização com a tecnologia de comunicação em uso.

Através do cenário acima exposto, pode-se compreender de forma mais clara a maneira pela qual a CMC pode se dar num ambiente de aprendizagem colaborativa, ou seja, as várias maneiras como os estudantes podem trocar informações e se ajudarem mutuamente no processo de validação dessa informação, contribuindo na construção do conhecimento. Mas fica a questão: funciona ou não funciona ?

Em Berge e Collins (1995), algumas pesquisas indicam como resultados que o professor conectado em rede interage mais com seus alunos do que em situações normais, sem perder contudo o contato face-a-face com seus alunos. Em Archee (1993), algumas pesquisas indicam que a CMC causa como efeito uma espécie de camaradagem entre os estudantes que os ajuda formar sua identidade, propósitos de vida e sentimento coletivo.

No entanto, essas são apenas algumas formas de se analisar a questão proposta, pois a profundidade do assunto parece inesgotável já que, por exemplo, não podemos isolar artificialmente um e-mail num laboratório e analisa-lo sem considerar aspectos sociais, políticos, religiosos, filosóficos, entre outros (December, 1995).

Porém, temos alguns indícios e pistas sobre qual caminho trilhar para obter a efetiva interação desejada no paradigma proposto pela aprendizagem colaborativa.

4. CONTRA-POSIÇÃO

Em Teixeira Primo, é dito que os webdesigners que não abrem em seus sites possibilidades de diálogo limitam a interação ao clássico modelo de transmissão de informações. Isso não é necessariamente correto, pois fatores como a inteligência artificial e agentes podem formar as respostas dinamicamente nos sites e, de uma certa forma, se adaptarem ao perfil de cada usuário, transmitindo informações dinâmicas e não estáticas.

Em Archee (1993), é dito que a habilidade para facilitar o consenso da CMC é ilusória. Acredito que isso depende muito do papel do mediador, que deve motivar os que não se expressam e nortear os que fogem do proposto, sendo dessa forma, instrumento de extrema importância no caminho do consenso.

5. BIBLIOGRAFIA

1. ARCHEE, Ray (1993). Using computer mediated communication in an educational context: educational outcomes and pedagogical lessons of computer conferencing. University of Western Sydney, 1993.
2. BERGE, Zane, COLLINS, Mauri (1995). Computer-mediated communication and the online classroom in higher education. Computer Mediated Communication Magazine, Volume 2, Number 3, 1995.
3. DECEMBER, John (1995). Transitions in studying computer-mediated communication. Computer Mediated Communication Magazine, Volume 2, Number 1, 1995.
4. MATOS COELHO, Maria Inês de. Educação a distância, comunicação mediada por computador e a comunidade de aprendizagem: explorando a prática para formação-ação de docentes. Projeto BH2-EAD-UEMG (Protem-CNPq-RNP).
5. POLESEL FILHO, Pedro (2001). A comunicação mediada pelo computador: diferentes formas de contato e aprendizagem. XXIV Congresso Brasileiro da Comunicação, 2001.
6. TEIXEIRA PRIMO, Alex Fernando. Ferramentas de interação na WEB: travestindo o ensino tradicional ou potencializando a educação através da cooperação. Universidade Federal do Rio Grande do Sul.

Agentes de Software: uma breve introdução

Por Dalton Lopes Martins

Após a explosão do uso doméstico da Internet, na metade dos 90, uma tecnologia tornou-se a coqueluche dos desenvolvedores de software para ambientes de rede e sistemas distribuídos: os agentes de software. No entanto, agentes não são programas que rodam apenas em ambientes voltados para redes, como veremos a seguir, mas podem ser utilizados em várias situações, como agentes de interface (lembram-se do “chato” clip do Word?), gerenciadores de desktop, entre outras aplicações.

Mas, o que define, o que determina que um programa seja um agente de software? Um agente é, antes de mais nada, um programa desenvolvido em uma linguagem de programação qualquer. No entanto, há algumas características na implementação de um agente que o diferenciam de um programa clássico.

O agente deve possuir alguns requisitos necessários para que seja considerado como tal: um ciclo de vida contínuo no tempo, um ambiente de atuação, sensores que recolham informações do ambiente, atuadores que causem mudanças no ambiente e autonomia, ou seja, funcionamento independente da interferência do usuário. Agora, podemos definir melhor cada um desses requisitos.

O ambiente é a área de atuação do agente e pode ser, teoricamente, qualquer parte independente que possamos identificar num sistema. Podemos considerar como ambiente o sistema de arquivos local onde podemos ter rodando um agente de mirror, que espelha o conteúdo de um diretório em outro; podemos considerar como ambiente a Internet no caso de agentes spider, que caminham de site em site verificando a validade de links; podemos considerar como ambiente uma LAN (Local Area Network) no caso de um agente que verifique os usuários conectados e as aplicações que usam; ou, até mesmo podemos considerar um ambiente a própria área de desktop do sistema operacional no caso de um agente de interface.

Os sensores são os mecanismos que utilizamos para captar as mudanças que ocorrem no ambiente, como os sockets (mecanismo que cria uma conexão entre duas máquinas através de uma porta de comunicação e do IP de ambas) e os métodos que permitem obter informações do sistema, como rotinas para obtenção de data, hora, listagem de um diretório, etc.

Os atuadores são os mecanismos que utilizamos para efetuar alguma alteração no ambiente, como os próprios sockets (a conexão criada é bi-direcional, permitindo tanto ler quanto escrever), métodos para apagar arquivos, para desenhar algum objeto na tela, exibir informações, etc.

O ciclo de vida de um agente representa o tempo em que ele se encontra em execução no objetivo de realizar uma determinada tarefa. Após esse tempo, o processo que executa o agente irá morrer ou ficará “dormindo” durante outro intervalo de tempo. Como exemplo, podemos imaginar um agente que realiza backup de um servidor FTP para o disco local da máquina de um usuário. Se o agente ficar o tempo todo lendo o servidor, a máquina do usuário irá ficar praticamente paralisada. No entanto, o agente lê as informações de arquivos do servidor, atualiza no cliente e dorme por um tempo, retornando após para novamente procurar por mudanças no ambiente.

A autonomia é a principal característica de um programa que o torna um agente. Ela indica que o programa será executado independente da intervenção do usuário, ou seja, ele será capaz de controlar seu próprio fluxo de ações.

Desta forma, temos caracterizado os requisitos que tornam um programa um agente. A partir disso, podemos imaginar diferentes aplicações e tecnologias que possam servir como motivação e base de apoio no desenvolvimento de programas orientado a agentes na programação de jogos de computador.

Agentes de software e desenvolvimento de Jogos

No desenvolvimento de jogos, um fator importante e essencial é a inteligência que há por trás da interface, ou seja, o mecanismo que vai processar as ações tomadas pelo usuário e gerar uma reação por parte do sistema ao usuário. A programação clássica dessa inteligência se dá através do paradigma comportamental, ou seja, o programa supõe uma série de comportamentos possíveis por parte do usuário e, com base nisto, irá gerar uma reação também previamente determinada. O problema dessa forma de lidar com a inteligência do sistema é que ela limita as ações possíveis por parte do usuário e permite que o mesmo descubra o padrão de análise de movimentos utilizado pelo programa, gerando aquelas cômicas situações onde o usuário cria mecanismos para burlar o sistema e assim avançar no jogo.

Os agentes podem ser utilizados para resolver esses problemas e criar jogos mais dinâmicos e interativos. A autonomia de execução de um agente pode ter vários níveis de complexidade, permitindo desde o nível mais básico onde o agente possa controlar suas próprias ações, até o nível mais alto, onde o agente possa tomar decisões orientado a metas específicas e utilizar mecanismos de análise para verificar se está sendo bem sucedido ou não.

Esse nível de programação exige por parte do programador o conhecimento de alguns conceitos que possam auxiliar no modelamento do agente, como processamento distribuído, threads que permitam a execução paralela de pedaços de um programa, construção paralela de sensores e atuadores que permitam o nível de interação desejada, entre outros fatores.

Iremos trabalhar cada um desses conceitos ao longo do tempo e fornecer exemplos de aplicações desenvolvidas na linguagem JAVA. Por enquanto, fica a idéia e a motivação inicial para se considerar uma nova forma de programação no desenvolvimento de jogos para computadores.

Jogo Generally

Imagem Generally - Tela de jogo

Alguém já teve a vontade de ter um jogo no seu PC, mas que fosse divertido como aqueles jogos do ATARI? Os mais velhos responderão certamente que sim.

Um dos maiores problemas nos jogos atualmente é que eles são tão perfeitos que, ao invés de estimular a imaginação, como os jogos mais antigos faziam, hoje, justamente pecam por não fazer isso. Naquela época, na quase pré-história da informática, dava-se muito mais atenção ao jogo em si, do que a aparência dele (tudo bem, existia uma grande barreira técnica para se fazer o que se faz hoje, mas os jogos eram mais divertidos e bem bolados).

O jogo mais “moderno” que eu conheço e que era uma delícia jogar e que lembrava esses jogos mais antigos, era o jogo ROAD FIGHTER, para MSX. O jogo era simples, com um visual mais bonitinho que um enduro do ATARI (pudera, o jogo era de 1985).

Imagem do jogo Road Fighter - MSX
ROAD FIGHTER, da CASIO. Um grande jogo de corrida para MSX.

Bem, demorou muito para eu achar outro jogo que eu curtisse tanto para jogar. Finalmente, alguém, e é claro que tinha de ser de alguém da Finlândia, resolveu usar inteligentemente os recursos atuais e fizeram o GeneRally, um jogo de carros que vem ocupando bastante meu tempo ultimamente e que com certeza, vai passar a dividir o seu tempo também, ao meio desses DOOMS da vida.

TELA PRINCIPAL, CONTROLES E CONFIGURAÇÃO

Engana-se quem acha que encontrará uma grande apresentação no início do jogo. O jogo vai direto ao ponto, entrando num menu onde contém os jogadores e pistas disponíveis.

Imagem: Generally - Menu principal
Generally – Menu principal

Na parte de cima da tela, você define o tamanho da prova. Ela pode ser por voltas na pista ou por quilômetros. Logo abaixo, está a lista de corredores. Dentro da caixa, estão os jogadores disponíveis. Do lado esquerdo, onde estão as linhas, são os jogadores selecionados que participarão da corrida. O jogo está limitado a 6 jogadores ao mesmo tempo.

O jogo, por default, não possui nenhum tipo de piloto pronto. Você deverá criar um novo piloto selecionando o botão “CREATE DRIVER”. Abrirá uma janela onde você colocará o nome do jogador, se ele é humano ou é o computador (Aqui existe um sistema de IA para o computador jogar como oponente). Após criar ao menos um “DRIVER”, você deverá selecioná-lo e escolher uma das pistas na parte de baixo da tela. Selecione uma delas.

O JOGO

Imagem Generally - Tela de jogo
Generally – Tela de jogo

Se você selecionou apenas 1 corredor na pista, o jogo entra no modo time trial. Ou seja, você vai jogar contra você mesmo e suas melhores marcas. O jogo guarda as suas melhores voltas em cada pista e você deverá ganhar de você mesmo! Se selecionar mais de um piloto, o jogo entra no modo corrida,e você deverá fazer o impossível para ganhar(isso não é nenhum trocadilho — o jogo é difícil mesmo).

Os comandos, por default, são as 4 teclas direcionais para o JOGADOR, sendo a tecla UP o acelerador, DOWN, para brecar e LEFT/RIGHT para virar.

Imagem Generally - Alguns tipos de carros
Generally – Alguns tipos de carros

Uma das coisas legais do jogo é a variedade de carros disponíveis. Tem desde carros de rali, passando por Formula 1, MINI(o carro inglês), até TRUCK. Muito legal.

O EDITOR DE PISTAS

Provavelmente, o grande barato do jogo é o editor de pistas. Particularmente dizendo, eu nunca tinha visto nada parecido. Ele é muito versátil e permite você fazer praticamente qualquer coisa.

Generally – Editor de pistas

O editor de pistas parece um editor gráfico, de tão flexível que ele é. Pode-se fazer qualquer coisa praticamente. Veja o mapa acima (que foi feito em 5 minutos, é verdade). E veja o resultado final:

Generally - Resultado da pista editada
Generally – Resultado da pista editada

Perceba que até mesmo os defeitos da imagem original encontram-se na pista, durante o jogo. Ou seja: PERFEITO!!!

ALGUMAS PEQUENAS PERGUNTAS AOS AUTORES

Quem são vocês e onde vocês moram ?
Meu nome é Hannu Rabina e o meu irmão se chama Jukka Rabina. Nós somos os desenvolvedores do GenneRally. Nós moramos na Finlândia.

Quem teve a idéia original do jogo ?
Jukka teve a idéia original do jogo e iniciou o projeto. Eu me envolvi logo depois.

Vocês tiveram alguma “inspiração” especial para fazer o jogo ?
Sim, um jogo chamado Slicks’n’slide. Não se encontra muitos jogos como ele por ai. Simples e divertido. Eu gostaria de dizer que a idéia nunca foi copiar o “Slicks” porque acho que ninguém conseguiria fazer algo daquele tipo.

Vocês possuem colaboradores para desenvolver o projeto ?
Não. Somente nós programamos ele. Também tem algumas pessoas que testam o jogo antes de atualizarmos o programa para o público.

Que linguagem vocês utilizaram para desenvolver o jogo ?
Somente C++.

Para quando podemos esperar uma nova versão do GeneRally ?
Você pode esperar algo novo sim, mas poderá esperar por muito tempo. Nós estamos desenvolvendo ele e lançaremos uma nova versão quando acharmos que ele está pronto. Não existe data definida.

Se um nova versão do GeneRally for lançada, podemos esperar suporte rede (multiplayer)?
É uma possibilidade. Mas não temos planos para isso também.

CONSIDERAÇÕES FINAIS

O jogo é muito bom. Talvez o único problema dele seja o excesso de rigor que a IA do jogo oferece. A curva de aprendizagem do jogo é média e, ao configurar o “DRIVER” como computador, trate de colocar o número da IA bem baixo, pois caso contrário(e mesmo assim) você terá problemas para vencer.

A melhor notícia é que o jogo é GRATIS!!!!!!!! Pode ser baixado na página oficial do jogo em http://generally.rscsites.org/. Na página, há um forum com dezenas (Acho que centenas) de novas pistas que podem ser baixadas para você jogar no seu computador.

Bom divertimento!!!

Timming no Allegro

Por Daniel Loureiro

Uma das primeiras dúvidas que surge com a programação de jogos é com a temporização (“timming”). Coisas do tipo: “gostaria que o lutador gordo fosse um pouco mais lento que o oponente”, “quero uma contagem regressiva numa velocidade, meu jogador em outra, e o boomerangue dele em outra”, entre outras.

De fato, quando o jogo começa a ficar complexo, é comum termos elementos que executam em velocidades diferentes. Em programação isto é obtido executando trechos de código em velocidades diferentes: o código responsável por atualizar a contagem regressiva deve ser executado em uma velocidade (1 segundo, por exemplo), o código que modifica a animação do personagem em outra, e assim por diante.

O Allegro provê rotinas que facilitam esta tarefa. A primeira coisa que o programador deve fazer, é colocar cada um dos trechos de código em uma função diferente. Desta forma, temos uma função para atualizar a contagem regressiva, outra para movimentar o personagem, outra para animá-lo, etc.

Depois, deve-se chamar uma função específica do Allegro e passar 2 parâmetros: um é a função que desejamos que seja executada em determinada velocidade, o outro é o período entre uma execução e outra (em milésimos de segundo). Assim, passar a função “Mova_Personagem” e o valor 50, fará que “Mova_Personagem” seja executada a cada 50 ms, ou a 20 vezes por segundo (1000/50).

Você pode querer usar as macros do Allegro que convertem segundos para ms, execuções por segundo para ms, execuções por minuto para ms, e até mesmo (para os que gostam de padronizar) ms para ms (!!!). Entre as funções básicas de timing, existem mais 2: uma para a execução automática de uma função e a outra inicializa as funções de timing do Allegro.

Existem também outras funções relacionadas com o timing: algumas inúteis, que são idênticas às tradicionais, porém com outros nomes; outras para sincronização vertical (para melhorar a qualidade gráfica); e outras de uso geral (como uma nova versão para o famoso “delay”).

Abaixo, veremos as 3 funções mais básicas:

  • “int install_int(void (*proc)(), int speed)”. Esta é a função principal, e serve para criar um “timer” (função que será executada automaticamente). Ela põe a função passada pelo 1o parâmetro na lista de funções a serem executadas automaticamente pelo Allegro. Note que “speed” é o período em que a função será executada automaticamente. Se a função já estiver na lista, ela apenas modifica o período dado por “speed”. Obs.: A função passada por parâmetro não pode retornar algo, nem ter parâmetros, isto é, tem que ser algo como: “void Funcao(void)”.
  • “void remove_int(void (*proc)())”. Retira a função da lista (somente se ela existir), parando a execução automática dela.
  • “int install_timer(void)”. Inicializa as funções de timing do Allegro. Já que a função “install_int” chama ela se o programador ainda não o fez, seu uso não é obrigatório, mas recomendado por motivos de padronização.

Para converter para os milésimos usados por “speed”, você pode usar as seguintes macros:

MACRO CONVERTE O MESMO QUE
SECS_TO_TIMER(msegs) Segundos para ms 1000 * msegs
MSEC_TO_TIMER(mseg) Ms para ms mseg
BPS_TO_TIMER (bps) Execuções por segundos para ms 1000/bps
BPM_TO_TIMER (bpm) Execuções por minutos para ms 60000/bpm

Devido à forma com que o Allegro gerencia os “timers”, devemos tomar uma série de medidas em nosso programa:

  1. As variáveis globais que serão alteradas dentro de um “timer” devem ser declaradas com a palavra reservada “volatile”. Volatile, se você não se lembra, faz com que o compilador saiba que determinada variavel “volatile” pode ser alterada por “algo” que não seja exatamente algum código no programa principal.
  2. Após a declaração de um “timer”, devemos usar a macro END_OF_FUNCTION(Nome_da_Funcao_Timer)”.
  3. Todas variáveis globais acessadas (lidas e/ou escritas) nos “timers” devem ser trancadas com a macro “LOCK_VARIABLE(Nome_De_Uma_Variavel)”.
  4. Todas as funções de “timer” devem ser trancadas com “LOCK_FUNCTION(Nome_da_Funcao_Timer)”.
  5. Os “timers” não devem acessar o disco nem outras funções do sistema.
  6. Deve-se fazer os “timers” o mais simples possível.

Exemplo básico:

[c]

volatile int x=0; //Variável glogal modificada em um timer

void Anda(void) { //Timer
x++;
}

END_OF FUNCTION(Anda); //Necessário após a declaração de um timer

int main(void) { //Nosso programa

install_timer(); //Opcional, porém mais legível
LOCK_FUNCTION(Anda); //Obrigatório trancar os timers usados
LOCK_VARIABLE(x); //Obrigatório trancar as variáveis globais usadas nos timers
install_int(Anda, BPS_TO_TIMER(10)); //"Anda" deve ser executado 10 vezes por segundos
while(!Fim_Jogo) {} //Lógica do jogo
return(1);
}
[/c]

Para finalizar, devo destacar que o Allegro permite apenas 16 “timers”. Como as funções de animações FLI, mouse, interface GUI, e música MIDI necessitam de “timers”, se utilizarmos alguns destes recursos, a quantidade de “timers” do usuário fica ainda menor.

É preciso desenvolver um engine para o seu jogo?

UMA ABORDAGEM PELA PROGRAMAÇÃO ORIENTADA A OBJETOS VERSUS PROGRAMAÇÃO ESTRUTURADA

Quando se tem em mente o desenvolvimento de um software, deve-se passar necessariamente pela fase de projeto, onde as idéias a respeito do que se quer fazer são confrontadas com as possibilidades técnicas do grupo de desenvolvimento e uma síntese entre intenção e realidade irá nortear o processo de construção do código. Em se tratando de jogos, a coisa pode se tornar ainda mais complicada, pois geralmente esperamos muito mais de nossos programas do que aquilo que somos realmente capazes de realizar em curto prazo.

Essa fase de projeto de software pode ser traduzida em um detalhamento mais fino das atividades, entradas e saídas que o sistema irá comportar. Isso passa necessariamente por uma escolha primordial: programação estruturada ou programação orientada a objetos. A programação estruturada é aquela que nos permite detalhar o funcionamento de um programa através das funções e procedimentos que o compõem. A programação orientada a objetos nos permite uma outra hierarquia, mais rica e mais complexa, de estruturação, com classes que comportam métodos que podem herdar características de outras classes e assim consecutivamente. A ênfase que se dá ao projeto em programação estrutura é em relação à ação que uma determinada função ou procedimento irá executar, já na programação orientada a objetos a ênfase na fase de projeto se dá ao tipo de dados que se deseja obter e a forma como esses dados serão tratados pelo programa. São dois enfoques bem diferentes e que têm implicações de projeto que resultam em conceitos diferentes para um mesmo software.

Bem, deixemos momentaneamente a questão da programação estruturada e da orientação a objeto de lado para colocar em questão o que se entende por engine e qual deve ser o seu papel.

A palavra engine pode ser traduzida como “motor” ou “máquina”. Um engine pode ser entendido, de tal forma, como uma coletânea de código orientada à ação (execução de ações por parte dos elementos do sistema) que visa ser genérica o suficiente para que possa ser reaproveitada na construção de outros sistemas, enfim, de outros jogos que executem ações semelhantes. Veja que quando falamos de ação, não estamos apenas nos referindo a jogos de ação, mas sim a como um programa toma decisões em tempo de execução com base numa interação por parte do usuário. Essa definição difere consideravelmente do que podemos considerar uma biblioteca de software propriamente dito: uma lib é orientada ao suporte de tarefas de mais baixo nível que dão muito trabalho se forem reescritas a cada novo sistema desenvolvido, ou seja, não tem essa preocupação se ser orientada à ação.

Tomemos como exemplo jogos de RPG e pensemos no papel que um engine pode ter. Essencialmente, a estrutura de programação desses jogos é a mesma, mudando apenas o conjunto de regras que irá nortear o comportamento dos usuários e a forma como os mesmos irão interagir com o sistema. Se tivermos um código genérico o suficiente para passarmos como parâmetro as regras do jogo e as formas de interação, teremos um construído um engine que, de forma geral, pode nos auxiliar em todo o desenvolvimento de jogos desse tipo.

Visto isso, voltemos agora aos conceitos de programação estruturada e orienta a objetos.

A orientação a objetos surgiu como um novo paradigma em programação visando justamente resolver o problema de reaproveitamento de código e da manutenção desse código por pessoas diferentes. Como dissemos acima, a própria ênfase da orientação a objetos se dá nos dados que uma classe deve tratar, ou seja, nos dados que devem ser recebidos como parâmetros e aqueles que devem retornar de um método encapsulado por uma classe, o que torna a tentativa de generalizar o código muito mais eficiente do que na orientação estruturada.

É evidente que tal forma de programação exige disciplina e experiência, já que sempre iniciamos nosso estudo em programação pela forma estruturada e levamos certo tempo até compreender a forma como as classes podem ser estruturadas e vantagem que isso traz ao código final. Também é evidente que para desenvolvermos pequenos jogos, a forma estruturada é mais simples e, diria mais, até mais útil. Mas, a questão que fica, é que se pretendermos desenvolver um trabalho a longo prazo, visando produtividade de construção de código, parâmetros de qualidade na fase de análise do projeto, teste e manutenção, devemos sim nos preocupar em construir engines que sejam orientados a objeto e possam ser constantemente revisados para trazer o nível de generalidade que pretendemos alcançar. Logo, a resposta ao título do texto é: depende do porte e do desenvolvimento a longo prazo do projeto que se pretende criar.

Cobras

Jogo Cobras - Tela de abertura
Jogo Cobras – Tela de abertura

Cobras é o jogo desenvolvido pela XUTI SOFTWARE em 2002. Cobras é um jogo estilo Nibbles. Para quem não conhece, nada mais é que uma cobrinha. Sim, uma cobrinha, e seu objetivo é permanecer vivo, comendo os “pontos” que aparecem na tela. Você talvez conheça esse jogo de seu celular.

Fácil? Bem, seria se o seu personagem, a “cobrinha”, não fosse aumentando de tamanho, fazendo com que você tenha que ser um verdadeiro malabarista para não dar um nó em você mesmo. Vamos ver se você é realmente capaz!!

Nibbles foi o primeiro nibbles no mundo que suporta SKINS, podendo ser utilizado como advergame. Maiores informações, entre em contato com a XUTI SOFTWARE.

COMO JOGAR ?

As regras do jogo são bem simples. Controlando a cobrinha por meio das teclas cursoras, você não pode colidir com as paredes laterais do jogo e nem com você mesmo. O resto pode, e deve, para ganhar muitos pontos. Na versão básica do jogo, os pontos são representadas por “$” e você deverá pegá-los. Cada vez que você ganhar pontos, a “cobrinha” altera seu tamanho. O jogo, na versão atual (versão 1.0) não suporta mouse, mesmo em modo janela.

A tecla “P” pausa o jogo a qualquer momento e a tecla “ESC” interrompe o jogo em qualquer momento.

Deve-se apertar a tecla “ENTER” para entrar em menus.

Jogo Cobras - Tela do jogo...
Jogo Cobras – Tela do jogo…
Jogo Cobras - Score
Jogo Cobras – Score

REQUERIMENTOS DO SISTEMA

Para executar o jogo COBRAS você precisa do WINDOWS 95 ou superior e monitor com placa de vídeo com no mínimo suporte a 256 cores e resolução de 640×480. A quantidade de memória é variável, dependendo do arquivo DAT que você estiver utilizando. No arquivo DAT padrão do sistema, é necessário 10Mb de memória RAM, mas esse valor pode mudar, dependendo do arquivo que você estiver utilizando. Adicionalmente, você deverá atender o mínimo exigido a seu sistema operacional.

Jogo Cobras - Créditos
Jogo Cobras – Créditos
Jogo Cobras - Skin?
Jogo Cobras – Skin?

MUDANÇA DE TEMAS

O arquivo DAT é o arquivo que contém todas as informações gráficas e sonoras essenciais ao jogo. Ele encontra-se no diretório “dat” do jogo, na versão windows. E para que é importante você saber isso? Essencialmente é para você saber como o programa funciona e para entender o que o menu configuração faz no seu programa.

Se você possui outro(s) arquivo(s) DAT para o programa, entre na opção CONFIGURAÇÃO, no menu principal do jogo (Selecione com as teclas e aperte “ENTER”). A seguir, o menu de configuração aparecerá. Você pode ajustar, além da quantidade de vidas que você terá no jogo, a velocidade dele.

Mas o que importa é o DAT, então vá na opção DATAFILE. Ao lado estará escrito o nome do arquivo que está sendo usado. Você poderá mudar o DATAFILE utilizado utilizando as setas cursoras e teclando <ENTER>. Você perceberá as mudanças imediatamente.

Jogo Cobras - Skin MSX
Jogo Cobras – Skin MSX
Jogo Cobras - Skin MSX (fundo Aleste)
Jogo Cobras – Skin MSX (fundo Aleste)

DOWNLOAD:

Você pode acessar a área de Downloads do site.

Você pode fazer o download diretamente aqui:

Download “Cobras” cobras.zip – Baixado 5980 vezes – 2 MB

Ou você pode baixar o jogo diretamente do site Superdownloads.

Conheça o GNU Mages

Por João Ricardo Bittencourt

O GNU Mages é um ambiente de simulação para sistemas multi-agentes livremente distribuído criado para testar controladoras inteligentes para agentes em mundos virtuais, criado especialmente para jogos eletrônicos. Eu desenvolvi este ambiente durante o Trabalho de Conclusão no curso de Análise de Sistemas na Universidade do Vale do Rio dos Sinos (UNISINOS) sob a orientação do Prof. Dr. Fernando Osório. No mês de julho o protótipo do GNU Mages, versão 1.0.0 Alfa foi divulgado e está disponível gratuitamente para comunidade sob a licença GNU GPL no site http://www.inf.unisinos.br/~jrbitt/mages .

Atualmente existem muitos trabalhos sobre agentes autônomos, mas na verdade a grande maioria destes está voltada para agentes comunicacionais, do tipo motores de busca na Web, agentes negociadores ou refere-se ao novo paradigma de programação orientado a agentes. Muitos destes projetos estão focalizados somente com a arquitetura de rede e questões de protocolos de comunicação entre agentes. A idéia do GNU Mages é oferecer um ambiente para criação e simulação de mundos sintéticos, que permitem estudar e criar soluções que envolvam Inteligência Artificial (IA) para domínios do tipo jogos.

Além dos jogos eletrônicos, o GNU Mages pode ser usado para efetuar simulações nas áreas de robótica, simulações militares, sociais e biológicas. Sabemos que nos jogos eletrônicos é de suma importância criarmos controladoras inteligentes para os inimigos, aliados, unidades e adversários estratégicos. Evidentemente que não iremos utilizar técnicas de IA extremamente sofisticadas em simples inimigos em um jogo de plataforma quando estes podem ser modelados usando uma simples máquina de estados finitos. Mas quando queremos adicionar nos jogos inimigos realmente poderosos que criam táticas em jogos first person, como Quake e Half Life; ou pretendemos criar um grupo de aliados em um RPG com emoções e agindo de forma independente; ou quando queremos construir unidades táticas com comportamento semi-autônomo em um jogo de estratégia como Warcraft, definitivamente precisamos usar técnicas de IA sofisticadas. Usar um ambiente de simulação, como o GNU Mages, permite projetar facilmente controladoras que poderão ser usadas nestes jogos.

Pelo fato do foco do GNU Mages ser a construção de mundos sintéticos, o ambiente de simulação não está voltado somente para os jogos eletrônicos. O simulador também pode ser usado para avaliação de táticas militares (wargames), estudo de sistemas biológicos (vida artificial) e para projetos de robôs autônomos.

O GNU Mages é totalmente desenvolvido em Java e executa tanto na plataforma Windows, quanto no Linux.

Quanto suas funcionalidades o GNU Mages permite:

  1. Construir diferentes controladoras, usando diferentes tipos de sensores e técnicas de Inteligência Artificial. Possui uma fácil integração com o ANNeF (Artificial Neural Networks Framework) e com o FuzzyF (Fuzzy Logic Framework). Ambas ferramentas são softwares livres voltadas para Redes Neurais Artificiais e Lógica Nebulosa, respectivamente;
  2. Livre distribuição: você é livre para executar, copiar, distribuir, estudar, modificar e aperfeiçoar o ambiente de simulação;
  3. Modelar múltiplos domínios multi-agentes. O GNU Mages oferece classes para modelagem de agentes, ambientes 2D, comunicação entre agentes e interação dos agentes com o ambiente. Inicialmente está sendo distribuído com a versão inicial o conhecido jogo de guerra “Capture the Flag”;
  4. Padronizar todos os dados necessários para as simulações usando XML. Isto facilita o intercâmbio de objetos entre a comunidade e o uso dos arquivos em outras aplicações. Além disso, através destes dados é possível efetuar testes estatísticos para validar as soluções para os domínios modelados;
  5. Criar ambientes 2D usando um editor de mapas. Existe uma carência na comunidade de editores gráficos 2D livremente distribuídos que gerem mapas em um formato que pode ser usado por outras aplicações. Por esta razão o editor 2D do GNU Mages gera mapas formatados em XML, para que qualquer aplicação, plataforma ou linguagem de programação possa utilizar estes arquivos;
  6. Treinar os agentes inteligentes. O GNU Mages possui um ambiente gráfico que permite coletar exemplos para treinar os agentes usando algum tipo de algoritmo supervisionado;
  7. Executar simulações distribuídas usando uma arquitetura cliente-servidor.

Como já foi dito a versão que está sendo distribuída é um protótipo, a versão 1.0.0 Alfa. Por esta razão não é uma versão estável e precisa da ajuda de toda a comunidade para um constante aperfeiçoamento. Por esta razão estou convidando a todos os interessados em participar deste projeto. Caso você seja programador Java ou tenha interesse em participar em um projeto de software livre voltado para as áreas de simulação, Inteligência Artificial e jogos eletrônicos entre em contato. Além de contribuir programando existem várias formas de ajudar o projeto:

  1. Use o GNU Mages! Nunca deixe de usar este simulador e referenciar em seus trabalhos. Simplesmente o fato de usá-lo já é uma grande ajuda;
  2. Divulgue. Fale sobre o GNU Mages para pessoas que tenham interesse neste tipo de ferramenta. Procure divulgá-lo, pois somente desta forma o projeto continua vivo e por conseqüência crescendo e ficando cada vez mais arrojado para toda a comunidade;
  3. Seja um Tester: Você instala o simulador e fica utilizando-o. À medida que erros e problemas surgem, você vai relatando estes problemas para que possamos corrigir estes bugs. Além disso, você pode dar sugestões de novas funcionalidades e pontos que precisam ser melhorados;
  4. Seja um tradutor. Se você não é um profissional da informática, mas domina algum idioma (inglês, espanhol, italiano, russo, japonês, ou qual for outros idioma), você pode nos ajudar na tradução das documentações;
  5. Escreva documentação: Caso você domine alguma parte do GNU Mages você pode ajudar escrevendo manuais, tutoriais e how-tos, relatando sua experiência e facilitando o uso do GNU Mages por toda a comunidade.
  6. E programando é claro! Se você é programador Java e tem interesse neste tipo de aplicação entre em contato, por favor. Precisa-se de programadores.

Viste o site do GNU Mages (http://ww.inf.unisinos.br/~jrbitt/mages) lá você vai encontrar todos os arquivos necessários para a execução do simulador, um guia de instalação e uma série de publicações que tratam especificamente do GNU Mages, incluindo uma versão preliminar do Trabalho de Conclusão que deu origem ao simulador.

Como não podia deixar de ser: Comunidade, uni-vos!

Recursos da/na web que permitem a disponibilização de conteúdos e processos educacionais

Por Dalton Lopes Martins

1. Introdução

Há várias maneiras de se enxergar uma abordagem para o tema recursos da/na web que permitem a disponibilização de conteúdos e processos educacionais. Pode-se falar, por exemplo, de recursos físicos como perfil de hardware desejado, topologia de rede de dados, voz sobre IP, softwares de autoria e tecnologias que, independente da plataforma, sejam voltadas a proporcionar maior interação entre o usuário e a web. Esse artigo, por entender que disponibilização de conteúdo implica a capacidade de acessar e interagir com a informação, escolheu esta última opção para centrar seu foco de estudo

2. Embasamento

Considero que a pesquisa realizada para o tema proposto foi a mais difícil até o presente momento do curso. Tive dificuldades para encontrar um foco dentro da vasta gama de opções que o tema permite. Isso somente foi resolvido com a leitura do texto “Interação na Web” (ver bibliografia), que permitiu encontrar um caminho de pesquisa. A partir deste ponto, a necessidade de se aprofundar em algumas tecnologias levou ao encontro dos outros textos utilizados; explorando-se dessa forma temas como PHP, Servlets, JAVA, CORBA e JSP.

3. Opinião

Segundo Raposo et al. (1999), as grandes vantagens em se desenvolver aplicações disponibilizadas via web estão associadas à fácil acessibilidade: as aplicações ficam disponíveis a uma cada vez mais ampla gama de usuários da web e elas podem ser acessadas de praticamente qualquer lugar (de casa, do trabalho, ou mesmo em trânsito, através da computação móvel); somada a estas vantagens, ainda existe a independência de plataforma das aplicações web.

Para tornar viável as vantagens acima citadas, deve-se disponibilizar a informação, o conteúdo, de forma eficiente e inteligente, de maneira a maximizar um dos maiores interesses na web: a interação. No caso educacional, objeto deste estudo, a interação torna-se ainda mais importante, pois segundo os novos paradigmas da educação, o aprendizado é um processo construído pelo aluno e com intensa realimentação por parte do educador via os recursos disponíveis.

A partir disto, torna-se necessária a disponibilização de tecnologias que implementem esse nível de interação desejado entre o usuário e o objeto de seu estudo. No entanto, as tecnologias básicas da web (HTTP e HTML) ainda impõem algumas limitações no que diz respeito à interação com as aplicações: falta de controle sobre a aparência da interface, o protocolo HTTP não suporta conceito de sessão (possibilita maior controle da comunicação), lentidão de realimentação, não garante taxa de transmissão mínima, entre outros (Raposo et al., 1999).

Porém, a web tem evoluído de sua antiga estrutura estática (o servidor web enviava ao usuário apenas páginas previamente construídas e com conteúdo estático) implementada apenas com hipertexto puro para aplicações mais dinâmicas (o servidor web é capaz de gerar páginas dinamicamente conforme informações obtidas através do usuário, inclusive realizando processamento na máquina local), que permitem intensa troca de informação entre o usuário e o servidor web. Essa evolução tem ocorrido graças a tecnologias como a CGI (Common Gateway Interface), ECMAScript, Java, Java Servlets, Java Beans, Java 2D, Java 3D, JSDT (Java Shared Data Toolkit), CORBA, PHP, VRML, entre outras.

Segundo Volkheimer (2001), Servlets são programas que rodam no lado do servidor e são capazes de gerar conteúdo dinamicamente, ou seja, eles recebem dados do usuário, realizam um determinado processamento e retornam uma página HTML específica para os dados de entrada. Isso, como se pode imaginar, permite implementar processos educacionais como, por exemplo, análise da resposta do usuário a uma determinada questão e uma realimentação por parte do software educacional com base nos dados de entrada.

Já a PHP é uma linguagem de script que é acoplada ao HTML e é interpretada no lado do servidor. Ela é mais direcionada ao trabalho com bancos de dados, já que se relaciona com Oracle, Sybase, Informix, entre outros (Brockmeier, 2000). A PHP auxilia na disponibilização de consultas a bases de dados e no cruzamento de informações, suportando pesquisas e estudos relacionados aos dados analisados. A tecnologia CORBA pode ser utilizada com o mesmo propósito, no entanto, ela possui a vantagem de gerenciar um grande número de usuários ao mesmo tempo, sendo portanto importante no suporte a aplicações que possuem alta demanda de acesso.

Portanto, pode-se concluir que essas tecnologias facilitam e tornam possível a disponibilização de conteúdo e processos educacionais na web, tornando-se dessa forma viável a implementação dos novos paradigmas educacionais através da interação proporcionada pela web.

4. Contra-posição

Os textos utilizados para a elaboração do artigo apresentam as tecnologias e suas características, portanto, não possibilitam margem para contra-posição a algum argumento conceitual.

5. Bibliografia

1. BROCKMEIER, Joe (2000). Introduction to PHP. Linux Magazine, 2001.
2. MORGAN, Bryan (1997). CORBA meets Java. JavaWorld.com, 1997.
3. RAPOSO, Alberto B., MAGALHÃES, Léo P., RICARTE, Ivan L. M. (1999). Interação na WEB. Proposta JAI’99, 1999.
4. VOLKHEIMER, Jeff (2001). Introduction to Servlets, JSP and Servlet Engines. Site DevCentral, 2001.

Jogo Silver

Jogo Silver - Capa do jogo
Jogo Silver
Jogo Silver: Quando a magia é usada a favor do mal…

Silver é um jogo que merece uma posição de destaque na nossa seção de favoritos. Não somente pelo fato do jogo ser bom, mas, como produtores de jogos, temos que olhar com uma certa atenção as experiências bem sucedidas, ou pelo menos, nas boas idéias…

O enredo

Silver não inova em nada no enredo. De certa forma, chega até mesmo a decepcionar.

A história se passa num mundo imaginário Jarrah que é constituido por 8 ilhas, conectadas por pontes. Silver é o mago “malvado” da história, que num belo dia resolveu usar seu poder para dominar as 8 ilhas e junto com seus filhos, Fuge, um assassino terrível, e sua filha, Glass, uma feiticeira, eles transformam Jarrah num mundo marcado pelo terror.

Na ilha central encontra-se HAVEN. E é onde nosa história começa. Silver procura uma noiva para ele e exige o direito da “PRIMA NOCTE” (referencia total ao “direito” que os senhores feudais tinham na Idade Média) e levam todas as mulheres de HAVEN (Isso com certeza indignaria qualquer homem, em qualquer época e é motivo o suficiente para querer sair “quebrando” tudo pela frente… 😀

Bem, tudo estaria bem se Fuge e seus homens não tivessem levado JENNIFER, a sua amada. Bem, é nesse ponto que você entra na história, correndo e lutando, para HAVEN, antes que o navio (carregado de mulheres, diga-se de pasagem!!) saia de HAVEN e levem as mulheres para SILVER. Adianto aqui, e isso é mostrado bem no começo do jogo, que você não chegará a tempo.

Jogo Silver - Capa do jogo
Jogo Silver – Capa do jogo
Jogo Silver: Imagem do jogo
Jogo Silver: Imagem do jogo
Jogo Silver: Imagem do jogo - 02
Jogo Silver: Imagem do jogo – 02
Jogo Silver: Imagem do jogo - 03
Jogo Silver: Imagem do jogo – 03

O que tem de bom no jogo então?

Bem, essa é a parte importante. A primeira coisa é a qualidade gráfica do jogo. Os gráficos são uma mistura de arte tradicional com gráficos poligonais. Você terá oportunidade de ver muitos screenshots aqui neste artigo e poderá comprovar isso.

A mistura é inteligente. Os cenários (o background) são lindíssimos, e o efeito é fantástico. Isso obriga, já que os desenhos são, por assim dizer, digitalizados, o jogo a ter uma espécie de câmera(No melhor estilo de ALONE IN THE DARK), ou seja, o jogo, apesar de contar com movimentos em 3D de todos os personagens, não conta com a mesma mobilidade e variedade em seu cenário. Isso não é um problema. Ao contrário, uma qualidade. Perceba os detalhes nas imagens do jogo.

O detalhe, que deixa o jogo muito interessante é o fato de usarem gráficos poligonais para desenhar os personagens. E, ao contrário do que ocorre em ALONE IN THE DARK, onde fizeram questão de desenhar os personagens enormes e ficava evidenciado que o personagem parecia ser feito de caixa de fósforos, em SILVER, fizeram os personagens relativamente pequenos, evidenciando muito mais o background do jogo do que os personagens. E como os personagens são menores, sobra processamento para dar alguns detalhes a eles, que, se fosse feito em um personagem “grande”, ainda assim, tornariam o jogo esquisito. Ponto para os produtores do jogo. O jogo parece mais natural dessa forma.

Jogo Silver: Imagem do jogo 04
Jogo Silver: Imagem do jogo 04
Jogo Silver: Imagem do jogo 05
Jogo Silver: Imagem do jogo 05
Jogo Silver: Imagem do jogo 06
Jogo Silver: Imagem do jogo 06
Jogo Silver: Imagem do jogo 07
Jogo Silver: Imagem do jogo 07

Músicas e efeitos sonoros

As musicas e efeitos sonoros é outro ponto que merece chamar atenção. Não tem nada de extraordinário nesse quesito, mas está aqui para lembrar-nos o quanto uma trilha sonora e efeitos sonoros são importantes para ambientar o jogo. De nada adiantaria o jogo ser bonito como é e ter uma música de péssima qualidade. Se as músicas não são a melhor coisa do jogo, entretanto elas não atrapalham, o que, convenhamos, já é bastante. Acho que pior do que não ter música num jogo nesse estilo, é ter uma música irritante.

Jogo Silver: Imagem do jogo 08
Jogo Silver: Imagem do jogo 08
Jogo Silver: Imagem do jogo 09
Jogo Silver: Imagem do jogo 09
Jogo Silver: Imagem do jogo 10
Jogo Silver: Imagem do jogo 10
Jogo Silver: Imagem do jogo 11
Jogo Silver: Imagem do jogo 11

Interface

Aqui está, na minha opinião, uma das melhores coisas do jogo. A interface com o jogador. Todos os diálogos estão numa espécie de DIALOG BOX na tela, com a foto de quem está falando (Na versão em português do jogo. Na versão inglesa, as opções são FALADAS e DIALOG BOX), no melhor estilo RPG. Não é uma inovação, é verdade. Entratanto, vale o mesmo comentário sobre as músicas: Não atrapalham. E são simples.

Outro fator a parte é a jogabilidade que o jogo proporciona. É difícil ver um jogo que usa exclusivamente o mouse por um motivo simples: Só existem 2 botões no mouse(Tá, existem 3 botões também, mas o mais difundido por ai são os mouses de 2 botões…). Então, invariavelmente, usa-se o teclado como auxiliar do mouse. O destaque aqui é a forma inteligente de uso do mouse, e, acredito, que se possa fazer cerca de 90% dos comando somente através dele. Tarefas estas que, em outros jogos, são relativamente complexas, como selecionar objetos numa mala, tipo de arma, tipo de armadura, magia, etc…estão a apenas 2 cliques de mouse. E não abre nenhum MENU TEXTO, como é usual nesses jogos, mas um menu gráfico extremamente funcional e agradável.

Concluindo…

Bem, eu ainda não terminei o jogo para dizer se há um grande final ou não (Na verdade já terminei, mas é para dar um suspense 🙂 ), mas o que importa aqui é ver o jogo e tentar aplicar algumas idéias em seus próprios jogos.

A interface é o ponto forte na minha opinião e o ENREDO é ponto fraco. É perceptivel o quanto é “batida” a história e você percebe isso na pobreza dos diálogos. Não é um jogo que inova em nada, entretanto, tecnicamente dizendo, ele é ótimo e serve como base para você se quiser fazer um jogo do gênero. O enredo não chega a estragar o jogo, afinal não é uma obra prima, mas também não atrapalha. É apenas um tema corriqueiro. Mas a qualidade geral do jogo acaba compensando.

Suporte à autoria de documentos e ambientes educacionais: como implementar hipertexto?

Por Dalton Lopes Martins

1. Introdução

A construção de documentos e ambientes educacionais passa necessariamente pelo uso de uma nova linguagem: o hipertexto, a hipermídia. Segundo Oinas-Kukkonen (1994), o desenvolvimento de aplicações hipertexto requer uma boa compreensão da estrutura da aplicação. Isso quer dizer que o processo deve ser muito bem estruturado, e, em alguns casos, isso pode ser interpretado pela necessidade de se desenvolver um “esqueleto” hierárquico.

Em Castro et al., encontramos que o autor, por sua vez, precisa aprender a expressar suas idéias no novo meio – a expressão de idéias não mais se limita às palavras, mas deve incluir as conexões entre os nós. O autor precisa antecipar os usos que o leitor irá fazer da informação apresentada, prevendo as ligações necessárias.O uso dessa nova linguagem leva a um estudo de tecnologias que possam implementá-la.

2. Embasamento

A pesquisa realizada levou em consideração o levantamento de informação a respeito de tecnologias que estão por detrás do hipertexto e da hipermídia. Para tanto, um levantamento de alguns aplicativos e tecnologias de uso popular foi realizado, chegando a nomes como o Toolbook, Hypercard e XML, entre outros. A partir disso, a pesquisa focou em análises e estudos de caso em que as tecnologias acima citadas foram implementadas.

3. Opinião

No desenvolvimento de aplicações hipermídia, há a necessidade de se utilizar de um modelo de base, que possa nortear as etapas de construção do projeto e o uso da tecnologia relacionada. Schwabe et al. propõe o uso do método OOHDM (Object-Oriented Hypermedia Design Method), que é composto por quatro atividades diferentes: projeto conceitual (modela a semântica do domínio da aplicação), projeto navegacional (leva em consideração o perfil do usuário e a tarefa a ser executada, dá ênfase nos aspectos cognitivos), projeto abstrato da interface (modela objetos perceptíveis, implementa as metáforas escolhidas e descreve a interface para os objetos navegacionais) e, por fim, a implementação.

Portanto, para a implementação desse modelo orientado a objeto, entre outros modelos, as ferramentas de software são criadas. Através do trabalho de Dalgarno (1998), podemos encontrar uma análise das características de alguns dos principais aplicativos utilizados na autoria de sistemas construtivistas de aprendizado cooperativo. As ferramentas utilizadas foram: Macromedia Authorware, Macromedia Director, Asymetrix Toolbook, Claris Hypercard, Microsoft Visual J++ e Microsoft FrontPage.

Diversos testes foram realizados nos pacotes acima citados, dentre elas a incorporação de elementos de mídia, incorporação de elementos interativos, implementação de questões e realimentação em caso de erro, implementação de simulações e “micromundos”. Alguns pontos bons e ruins foram levantados de cada pacote e, de maneira geral, pode-se dizer que o FrontPage não foi bem avaliado por não permitir fácil mobilidade de objetos na tela e ficar preso ao paradigma do HTML; o Visual J++ foi muito bem avaliado para o caso da utilização de simulações e “micromundos”, apesar do esforço de programação necessário, o que torna complexo demais para outras aplicações; o Hypercard foi muito bem avaliado na aplicação com recursos multimídias e interatividade limitada; o Director e o Authorware foram bem avaliados para aplicações básicas, envolvendo gráficos e textos com pouca interatividade e de valor questionável para aplicações que exigem alto índice de interação e aplicação de simulações; já o Toolbook apresentou a melhor avaliação geral no suporte a construção de ambientes cooperativos construtivistas de ensino com base nas avaliações realizadas.

O sistema Toolbook é um sistema comercial que permite a construção de pacotes interativos de forma simples e praticamente sem necessidade de programação por parte do usuário, apesar de incluir no sistema uma linguagem chamada Open Script, que é similar ao Visual Basic. Ele é organizado pelo princípio de um livro com capítulos, dando ênfase no projeto da tela e segue a seguinte lógica: o autor inicia pelo conteúdo, desenvolve as telas e constrõe as estruturas nelas (Rest &Brattan, 2001). Uma aplicação normalmente irá envolver texto, áudio, vídeo, animação, gráficos e interatividade por parte do usuário.

Uma outra tecnologia que ainda não foi apresentada é o XML. XML é um método para estruturar dados. Entende-se por “dados estruturados elementos de uma folha de cálculo, cadernetas de endereço, parâmetros de configuração, transações financeiras, desenhos técnicos, entre outros. XML é um conjunto de regras, de linhas diretrizes, de convenções para a concepção de textos formatados que permitem estruturar os dados (fonte: Phal e www.w3.org/xml). Desta forma, XML torna-se uma importante tecnologia que pode suportar a criação de documentos voltados para o ensino, levando-se em conta sua capacidade de estruturar a informação e relação que essa estrutura pode ter com a abordagem orientada a objeto.

Como visto acima, há hoje diversas tecnologias voltadas para o suporte à criação de aplicações educacionais, entre outras. No entanto, elas diferem entre si pela facilidade de uso e flexibilidade na implantação de recursos. O que deve se considerar sempre é que o suporte a autoria deve possibilitar a definição de um vocabulário e de regras para expressar a estrutura do conhecimento e uma metodologia guiando o processo de autoria.

4. Contraposição

Em Rest e Brattan (2001), encontra-se uma descrição de um recurso do Toolbook que é considerado pelos autores como importante e que representa uma vantagem a mais no uso do pacote. O recurso em questão é a limitação de tentativas e limitação de tempo para se responder a uma determinada questão proposta pelo sistema. Como recurso técnico, pode ser interessante, mas como recurso educacional, deve ser questionado. Aparentemente, esse tipo de recurso trás para o computador o peso psicológico da prova clássica e pode se tornar um fator a mais de bloqueio, o que deve ser evitado e reconstruído pela tecnologia.

5. Bibliografia

1. CASTRO, Maria Alice Soares de, GOULARTE, Rudinei, REAMI, Elderclei Regis, MOREIRA, Edson dos Santos. Infra-estrutura de suporte à editoração de material didático utilizando multimídia. Departamento de Ciências de Computação e Estatística ICMSC – Universidade de São Paulo- São Carlos.
2. DALGARNO, Barney (1998). Tools for authoring constructivist computer assisted learning resources: a review. ASCILITE, 1998.
3. OINAS-KUKKONEN, Harri (1994). Lessons learned from developing hypertext applications. In Claude Chrisment (ed.): Information Systems Design and Hypermedia. Cépadués-Éditions, Toulose, France, 1994.
4. PAHL, Claus. An investigation of XML-technologies for infrastructures for Web-based virtual courses. School of Computer Applications, Dublin City University.
5. REST, Tony, DON, Brattan (2001). The use of authoring to produce effective learning materials. CAL-laborate vol. 7 October 2001.
6. SCHWABE, Daniel, ROSSI, Gustavo, BARBOSA, Simone D. J.. Systematic hypermedia application design with OOHDM. Departamento de Informática, Pontifícia Universidade Católica – Rio de Janeiro.

Introdução a História da Computação Gráfica

Por Alessandro Straccia

Podemos dizer que o marco inicial da computação gráfica aconteceu em 1968, na Universidade de Utah, através do professor David Evans e o Dr. Ivan Sutherland. Numa época onde os (poucos) computadores eram dedicados principalmente ao cálculo militar e financeiro, eles enxergavam além: para os dois, os computadores deveriam interagir com o usuário, executando tarefas das mais variadas.

Em 1968, a única interação com o usuário eram os cartões perfurados, o que dificultava a variedade de utilidades da máquina. Foi daí que nasceu a idéia de utilizar gráficos e desenhos para facilitar o trabalho.Assim nasceu a Evans&Sutherland, uma empresa pioneira no ramo da computação gráfica. Sua principal atividade era a criação de aplicações gráficas para simulação. Nela nasceram os primeiros conceitos de desenho vetorial, representação tridimensional em ambiente bidimensional, mapeamento de texturas, entre outros avanços. Foi na E&S também que foram descobertos os grandes gênios da computação gráfica atual, como Jim Clark (fundador da Silicon Graphics), Ed Catmull (fundador da Pixar) e John Warnock (fundador da Adobe). Hoje em dia, a E&S está voltada totalmente para a criação de ambientes simulados, tanto para a indústria militar e civil (simuladores de vôo e de tráfego), quanto para a indústria do entretenimento (cinemas interativos). Entre no site deles para dar uma conferida: www.es.com.

A segunda grande revolução podemos dividir em duas partes: a criação do computador pessoal, em 1976, com o Apple I, que democratizou a utilização do computador. Vale lembrar que a IBM só criou o seu primeiro PC em 1981, e em 1979 a Apple já tinha o Apple II, que rodava gráficos e imagens coloridas.

A segunda grande revolução foi em 1983/84, com a criação do Macintosh, que introduziu ao mundo a GUI (Graphic User Interface), e é a mãe de tudo que conhecemos hoje em dia em termos de computação gráfica. Já imaginou criar um desenho através de linha de comando? Em 1982 tivemos dois grandes acontecimentos: a criação da Adobe Inc, uma das pioneiras em aplicações gráficas (no início, apenas para desktop publishing – depois para todo o mercado), e a criação da Silicon Graphics, que se especializou na criação de hardwares específicos para aplicações gráficas.

Em 1984 eles lançaram a primeira workstation voltada totalmente para gráficos 3D. A criação do Amiga, da Commodore, também foi muito importante para a computação gráfica. Em uma máquina potente e relativamente barata, os profissionais podiam rodar programas de animação 2D, 3D, edição, composição, mixagem de áudio e mais uma infinidade de coisas. Muitas produtoras de vídeo ainda são baseadas, até hoje, em plataforma Amiga equipada com a famosa Vídeo Toaster. Até o começo da década de 80, vimos toda a base para a indústria da computação gráfica ser criada. Graças a esses pioneiros, tivemos em 1982 o primeiro filme a utilizar efeitos de computador, Tron, da Disney.

George Lucas os utilizou também em Guerra nas Estrelas e, a partir daí, a computação gráfica estava estabelecida em Hollywood. Claro que não podemos falar de computação gráfica sem falarmos nos jogos (que, inclusive, é o principal assunto deste site).

Como seria muito extenso incluir este capítulo especial e saudoso neste texto, recomendo que vocês acessem o site Retrospace, da Outerspace (http://outerspace.terra.com.br/retrospace/). Está bem completo e, melhor, em português.

Com a evolução do hardware e, principalmente, do software, vimos coisas inacreditáveis na telona. Quem diria que, em 1991, veríamos um ser de metal líquido se transformar numa pessoa (Exterminador do Futuro 2). Em 1993 os dinossauros voltaram à vida através do computador, em Jurassic Park. Em 1995 tivemos o primeiro filme criado no computador, Toy Story.

Infelizmente nosso Cassiopeia – que começou a ser produzido antes de Toy Story – não conseguiu ser lançado antes dele por problemas técnicos e financeiros. Mas é nossa a honra de ter o primeiro filme criado inteiramente no computador, já que Toy Story escaneou a geometria dos personagens a partir de modelos reais. Algumas curiosidades a respeito de Cassiopeia:

  • Foi utilizado um software de animação e modelagem 3D chamado Topas Animator, que era obsoleto já naquela época;
  • Os personagens e cenários foram criados a partir de formas geométricas simples, como esferas, cubos e cilindros;
  • O “render” foi feito numa rede com 20 computadores 486. Nos últimos meses de produção, os computadores foram roubados, o que atrasou ainda mais a finalização;
  • Cassiopeia 2 está sendo produzido, mas desta vez com equipamentos de ponta e com o software 3D Max, um dos mais utilizados hoje em dia. A última notícia a respeito do filme é que os produtores estão procurando jovens talentos em animação 3D para se juntarem à empreitada.

Nos dias de hoje, estamos vivendo várias revoluções ao mesmo tempo. A maior delas é a democratização das ferramentas de animação e computação gráfica. Se a Apple democratizou o uso dos computadores pessoais através do seu Apple II e Macintosh, o PC hoje é a plataforma mais barata e eficiente para a Computação Gráfica. Praticamente todos os softwares de animação acabaram sendo migrados para a plataforma Windows NT.

Há alguns anos, para se ter um equipamento capaz de rodar esses softwares, era necessário uma plataforma Silicon Graphics (sob o custo de, pelo menos US$ 10.000,00), e um programa de animação que custava a metade, ou até mais que o valor do hardware. Hoje em dia, com R$ 3000,00 você consegue um PC poderoso. A partir de US$300,00 você tem acesso aos principais programas gráficos e de animação.Isso significa que, em sua própria casa, você tem a possibilidade de aprender os principais softwares. Tem até a possibilidade de fazer um filme inteiro no seu PCzinho. Muitas produtoras de animação se aproveitaram dos baixos custos atuais pra entrar no mercado e mostrar o seu valor.Outros fatos importantes que estão revolucionando o mundo da computação gráfica:

  • O cinema digital, que está reduzindo os custos e facilitando a manipulação das imagens e cenas no computador;
  • As novas ferramentas de animação, que estão eliminando as tarefas repetitivas e dando mais tempo aos artistas para aprimorarem as técnicas mais complexas;
  • As modelos virtuais, que literalmente estão dando vida aos seres de computador. Veja Final Fantasy, O Senhor dos Anéis, Guerra nas Estrelas Episódio I (e aguarde o lançamento do 2o filme, que trará mais avanços), e um filme irá retratar bem esse mundo, Simone, com Al Pacino.
  • Hardwares cada vez mais poderosos, que estão diminuindo o tempo de render e de pré-visualização.

É isso aí. É claro que deixei de falar muitas coisas aqui neste texto. Vou continuar minhas pesquisas e num futuro próximo estarei fazendo uma versão 2.0 desta história.

Sistema Price 2001

Sistema Price 2001

Sistema PRICE 2001 é um programa para facilitar a vida dos profissionais da área financeira para o cálculo prático da tabela PRICE. O programa não tem grandes preocupações com ferramentas de apoio, uma vez que ferramentas como a calculadora, para apoio as necessidades do usuário, já se encontram disponíveis no Windows, ou melhor desenvolvidas em outros softwares, como o Microsoft EXCEL.

O programa ainda é teste, porque ele foi desenvolvido para dar suporte a um outro projeto. Como os valores lá eram mais “comportados”, sugerimos que, qualquer problema que ocorra, contate-nos para que possamos corrigi-lo.

Download:

Download “O que está acontecendo com a XuTi?” – Baixado uma vez –

Sistema Price 2001
Sistema Price em funcionamento, com toda a sua simplicidade

FAQ:

1. Gostaria de saber se é possível informar taxa de juros, por exemplo, anual e prestações mensais.
Resposta: A versão beta (e portanto, ainda em testes)que está disponível em nosso site, se baseia no sistema francês de amortização, sendo a “fórmula” muito mais flexível para interpretações. Desta forma, o valor da taxa de juros e numero de prestações devem ser correspondentes no que tange ao período.

Se quiser utilizar, por exemplo, um empréstimo de R$10000,00 a juros de 2%(ano ou mês), a serem pagos em 5 prestações(ano ou mês) o valor será R$ 2121,58(ano ou mês). Se colocou a taxa imaginando mês, o referente numero de prestações deverá ser informado ao programa da mesma forma, ou seja ao número de meses que você deseja. A interpretação então, cabe a você mesmo, seja no número de meses, ou anos, mas sempre em iguais tipos de períodos.

Senha

Jogo Senha
Jogo Senha

O jogo SENHA foi desenvolvido originalmente pela PROINFO Software, em 1995. O programa foi feito para o ambiente DOS/Turbo C, mas funciona sem problema sob o ambiente WINDOWS. Foi desenvolvido basicamente com a finalidade de aprender a utilizar strings em C.

O arquivo senha.rar, disponível na seção download, contém 3 versões do programa:

senha01.c Código fonte original do programa
senha01.exe Primeira versão do programa, com vários erros de planejamento do jogo
senha02.exe Segunda versão do programa, levemente modificada para resolver alguns problemas lógicos no jogo e de verificação de strings
senha03.exe Primeira versão oficial do jogo, com menus. Bem simples, mas apresentáve

Para fazer o download do jogo, vá na seção DOWNLOADS do site ou clique aqui: [Download não encontrado.]