Conselho para um primeiro ano de graduação em CS [fechado]

17

Estou chegando ao final do meu primeiro ano de CS, que tem sido principalmente um curso baseado em Java. Eu gostaria de me divertir com algum desenvolvimento de jogo, mas não sei por onde começar.

Algumas pessoas sugeriram que eu iniciasse com o Game Maker, que possui uma linguagem de script no estilo C (que deve ser fácil de entender), pois é provavelmente a mais simples e me permite focar principalmente no design do jogo e em como o jogo inteiro se encaixa.

Vejo muitas pessoas recomendando o XNA, pois possui uma boa abstração do opengl e do directX através de suas APIs. Eu também ouvi dizer que o C # é muito semelhante ao Java.

Também considerei a programação de jogos em Java, pois estou bastante confortável com isso e tenho feito leituras extras em multithreading e nas APIs de gráficos 2D.

Finalmente, um amigo recentemente me mostrou pygame, o que também parece muito bom, embora eu não saiba muito sobre isso.

Não sei se o C ++ é um bom ponto de partida, muitas das postagens que eu vi para desenvolvedores iniciantes de jogos não o recomendam para um primeiro projeto de jogo.

Eu apreciaria qualquer contribuição, especialmente daqueles que entraram no game dev de um background Java

avatarX
fonte
5
O C ++ é difícil, muito difícil, mas é mais fácil a longo prazo, se você tentar entender antes que o Java realmente o defina. É definitivamente mais difícil aprender C ++ a partir de um plano de fundo Java do que aprender Java a partir de um plano de C ++. joelonsoftware.com/articles/ThePerilsofJavaSchools.html
David Young
1
Eu morreria tentando aprender C ++ depois de começar com Java, comecei com o estilo C ++ mais antigo e depois aprendi Java. Se você está preocupado com o salto para os ponteiros, recomendo apenas aprender programação C e Unix direta. Isso o coloca em uma mentalidade totalmente nova, para que você tenha menos probabilidade de aplicar conceitos Java não aplicáveis.
michael.bartnett

Respostas:

14

Existem muitas boas escolhas. (Eu ensino CS1 e CS2, bem como programação de jogos.) Primeiro, é claro, aprenda a pensar como um cientista da computação. Não fique muito atado à linguagem, porque os conceitos são realmente universais.

Java é uma linguagem muito boa, mas construir um jogo em Java é um pouco tedioso. Existem alguns mecanismos interessantes por aí que tornam o processo um pouco mais fácil. Infelizmente, pode ser meio difícil anexar um mecanismo de jogo à sua ferramenta de edição.

Gosto do mecanismo FANG (infelizmente ainda não posso postar hiperlinks, procure no Google.) Uma parte interessante desse projeto é o editor on-line. Isso significa que você pode começar imediatamente sem precisar mexer nas configurações do eclipse.

Eu realmente não sou fã do Game Maker. A GUI é adequada para pessoas que não querem aprender a programar e é uma ferramenta de prototipagem decente (mas não ótima). No entanto, existem duas coisas que eu não gosto. Primeiro, é comercial. Isso não é uma coisa ruim, mas se houver alternativas gratuitas de código aberto que sejam tão boas (e existem), talvez você deva procurar primeiro. O maior problema com o Game Maker é a linguagem de script. Eventualmente, você irá superar a GUI e realmente começará a escrever código. A linguagem de script no GM é bastante retrospectiva. Como você é formado em ciências da computação, espero (espero) reutilizar código, elegância, clareza, eficiência e modularidade. O idioma do GM irá decepcioná-lo.

Eu amo Python e Pygame. (De fato, escrevi um livro sobre eles. Veja todas as minhas anotações e vídeos on-line no meu site, se você quiser. Você é bem-vindo a esses recursos, tenha ou não o livro.) Python é uma linguagem elegante e elegante que não é ' muito difícil de aprender (especialmente se você já sabe como programar.) O Pygame é um invólucro do popular mecanismo SDL 2D. Na verdade, adicionei um segundo wrapper ao pygame para facilitar o trabalho com o Flash.

Falando em Flash, acho que não vale a pena. (Eu sei que você não perguntou) É uma boa plataforma, mas o custo e a incerteza sobre como será o desempenho em dispositivos móveis significa que pode não ser uma ferramenta de aprendizado tão boa. (Também escrevi um livro sobre desenvolvedores de jogos no Flash, mas não ensino mais o Flash.)

Aqui estão outras ótimas coisas para tentar. Obtenha uma cópia do scratch no MIT: scratch.mit.edu É feito para crianças, mas não deixe que isso o afaste. É uma ferramenta de jogo e animação absolutamente incrível. A programação usa blocos, por isso é fácil começar. Você ficará surpreso com o que pode fazer com isso.

Você também pode experimentar Alice da Carnegie Melon www.alice.org A última edição (3) é na verdade uma extensão do Java, que usa os Sims2 Models.

Scratch e Alice são grátis.

Mais uma ótima ferramenta para analisar é o Blender www.blender.org

É uma ferramenta de modelagem 3D, mas muitas pessoas não sabem que também é um mecanismo de jogo completo com uma interface de programação de arrastar e soltar. Depois de superar os blocos, ele tem suporte para Python embutido.

Agora estou bastante interessado em HTML5 (que é apenas HTML - é realmente HTML, CSS e JavaScript.) Ele não existe como um ambiente de desenvolvimento de jogos, mas acredito que será um grande participante. Meu próximo livro será sobre desenvolvimento de jogos em HTML5.

Boa sorte para você e deixe-me saber se você tiver mais perguntas.

Dois pi
fonte
Obrigado pela sua contribuição, estou verificando seu site enquanto falamos. Tenho certeza de que será inestimável ter alguém com a sua experiência contribuindo aqui
avatarX 22/10/10
Manipulação de ponteiro não é universal = (amaldiçoe meu Java trazendo.
David Young
Gostaria de saber por que você acha que construir um jogo em Java é tedioso. Além disso, parece que você está sugerindo que o Python é menos tedioso. Com tantas ótimas estruturas e bibliotecas centradas em jogos Java por aí, parece uma declaração muito ousada de se fazer.
Zfedoran
1
Para um programador iniciante, tudo em Java pode ser mais tedioso. Compare algo como printf. No python, isso faz parte da instrução print: print "% s, sua pontuação é% d"% (aluno, pontuação). No php, você precisa converter todas as primitivas em classes de wrapper, convertê-las em objetos e criar uma matriz de objetos anônimos. Eu gosto de Java. (Ensino isso há anos e escrevi um livro sobre isso.) No entanto, se o objetivo é fazer com que alguém participe da programação de jogos, quero uma linguagem que saia do caminho o máximo possível.
2 pi
Obrigado por reservar um tempo para comentar. Isso me ajudou a entender de onde você é. No entanto, ainda não estou muito vendido no python sendo uma linguagem melhor para os alunos, semelhante à maneira como os professores da minha universidade questionam sua recente mudança no Python para alunos do primeiro ano. Talvez os alunos estejam simplesmente presos a novas questões. Costumava ser alunos fazendo tudo "estático público", agora eles têm dificuldade em entender a diferença entre os tipos.
Zfedoran
5

Depende de qual é seu objetivo e em que parte do desenvolvimento do jogo você deseja entrar.

Você está mais interessado nos detalhes reais de como os motores de jogo funcionam e na construção de algo a partir do zero ou deseja entrar nas partes do desenvolvimento do jogo o mais rápido possível.

Parafusos e porcas: XNA é uma boa maneira de mergulhar os dedos dos pés nessa arena. A estrutura faz muito por você, mas você pode substituir lentamente cada peça pelo seu próprio código à medida que se sentir mais confortável com o C #. Aprender C # é bom para as futuras posições de desenvolvimento de jogos, pois as ferramentas geralmente são criadas com C #.

Programação de jogabilidade: Unity é uma boa opção aqui. Gratuito e permite codificar em vários idiomas, incluindo JavaScript e C #. Você poderá colocar as coisas em funcionamento rapidamente, o que é um bom incentivo à motivação. Além disso, você pode fazer a transição para outro idioma e até misturar idiomas para ajudá-lo a praticar a ampliação de seu entendimento.

O bom é que eles são livres para brincar e podem ser conectados a uma variedade de hardware por um custo bastante mínimo.

wkerslake
fonte
4

Sempre poderia fazer alguns jogos baseados em java, nada de errado com eles (http://zetcode.com/tutorials/javagamestutorial/)

O XNA e o AS3 são muito próximos e podem criar jogos tão complicados ou simples quanto desejado. (embora o mesmo seja verdade com java)

Uma coisa a lembrar é sempre praticar, e apenas brincar com o código.

Assustadores
fonte
3

Java Monkey Engine

Se você se sentir mais confortável com Java, poderá usar o Java Monkey Engine como uma estrutura a ser usada durante a criação de jogos. Ele também possui uma quantidade razoável de documentação / tutoriais, incluindo instruções para integração com o Netbeans e o Eclipse.

lathomas64
fonte
Devo dizer que o JMonkeyEngine parece bom. Definitivamente vou dar uma olhada. Obrigado pela sua contribuição
avatarX 22/10/10
2

Unidade

Eu diria que tente a Unidade . Eles têm uma versão gratuita e você pode se molhar em poucas horas para ter uma idéia básica, seguindo dois tutoriais fornecidos pelo Unity:

A outra coisa interessante sobre a unidade é que você pode usar JavaScript como uma linguagem de script e pode publicar seu jogo no Windows, MacOS, Web, iPhone e agora também com a versão 3 em dispositivos Android.

Eles também estão usando o mecanismo StackExchange para as respostas do Unity e têm uma comunidade maravilhosa para todas as perguntas relacionadas ao Unity.

Lipis
fonte
1

Qualquer um desses seria um bom começo, falando como um desenvolvedor cuja educação inicial em CS era em Java.

O c # é muito próximo ao Java (às vezes brinco que é o Java de plataforma limitada com melhores bibliotecas), portanto o XNA pode ser uma boa escolha. O Minecraft é desenvolvido em Java com a biblioteca de jogos lwjgl; portanto, se você quiser ficar com o Java, esse é um bom método. Obviamente, o desenvolvimento 3D é meio complicado; dependendo do seu conhecimento, experiência e perseverança, convém esperar em 3D (ou mesmo 2D em um sistema baseado em 3D) até obter mais educação.

Para soluções 2D: o Game Maker é muito simples e foi usado para criar ótimos jogos. Você poderá escolher sua linguagem de script com bastante facilidade, mas pode ser muito simples para alguém com um ano de experiência em Java. Desenvolvo no Flash usando AS3 puro ( tutorial ), que é próximo o suficiente do Java para que suas habilidades sejam traduzidas facilmente.

Gregory Avery-Weir
fonte
1

Eu recomendo ir com o XNA. É uma plataforma bastante capaz e bem suportada com uma comunidade em crescimento. O XNA está realmente começando a encontrar seu "lugar" no ecossistema agora que a estrutura está sendo distribuída em mais plataformas do que nunca (incluindo o Windows Phone 7). Mais importante, no entanto, o uso do XNA forçará você a aprender C # e o desenvolvimento geral do .NET. Seria bom que você ganhasse experiência com essa plataforma, independentemente de decidir entrar no desenvolvimento de jogos, pois o desenvolvimento do .NET está crescendo e possui um mercado de trabalho muito saudável. Java, por outro lado, está morrendo lentamente há algum tempo, e eventos recentes serviram apenas para acelerar seu fim. Se o seu programa de CS, como o que eu concluí, for fortemente centrado em Java, será útil aprender o C # / .NET no seu próprio tempo.

Mesmo que o Java continue vivo, e você decida seguir uma carreira no desenvolvimento de Java, provavelmente terá que se integrar aos sistemas .NET de qualquer maneira. Portanto, por mais que as coisas aconteçam, a experiência só o ajudará a longo prazo.

Mike Strobel
fonte
Indeed.com/jobtrends?q=java&l= e Indeed.com/jobtrends?q=.net&l= são bastante representativos da demanda de mercado de ambos. Parece que o Java está realmente crescendo.
David Young
Eu não tinha considerado o influxo do desenvolvimento Java causado pelo sucesso da plataforma Android. Isso provavelmente tem muito a ver com o salto nas vagas relacionadas no final de 2008 e no início de 2009. Será interessante ver como o WP7 e a disponibilidade do MonoTouch para iOS e MonoDroid para Android afetam a presença móvel de Java.
Mike Strobel
1

Se você está interessado em design de jogos , por que não começar com um jogo de cartas ou algo que não requer programação? Isso permitirá que você se concentre no design e na mecânica do jogo, em vez de abrir caminho através de APIs, linguagens e estruturas com as quais você não está familiarizado.

Trimbo
fonte
1

Você também pode usar http://Processing.org . É um ótimo ambiente para aprender programação gráfica. Embora não seja estritamente uma ferramenta de desenvolvimento de jogos, ela tem muito a oferecer. Sua linguagem é uma extensão / simplificação de java e será rápida para aprender.

xer0x
fonte
0

Um conselho não relacionado à minha programação:

Crie um projeto elegante e mostre-o aos seus professores.

Foi assim que consegui empregos de verão como programador após o primeiro e o segundo ano de escola.

Nailer
fonte
Isso pode ser útil, mas realmente não aborda a crise de linguagem / API à qual o OP está enfrentando.
The Duck Comunista
0

Se você está apenas procurando por desenvolvimento de jogos, por que aprender outro idioma ao mesmo tempo? Eu ficaria com o Java, a menos que você queira aprender um novo idioma.

As principais opções para Java que eu conheço são o jMonkeyEngine, que é um mecanismo de gráficos 3D e geralmente considerado muito bom.

E há o jOGL, que é um wrapper Java sobre o OpenGL. Este é naturalmente um nível muito mais baixo.

Se você está apenas começando e deseja trabalhar com a lógica mais do que lidar com buffers, vinculação de sombreadores e similares, vá com o jMonkeyEngine. Se você quiser se aprofundar no assunto, vá com o jOGL.

Se você quiser aprender um novo idioma, em C # e Python eu provavelmente diria C #. A sintaxe é muito semelhante ao Java, e XNA e SlimDX são muito bons para gráficos. XNA sendo de nível superior, e tendo feito algumas coisas por você. No entanto, isso vem com uma restrição somente para Windows, sem o Mono.

Python é uma linguagem muito fácil de obter (demorei cerca de uma semana no máximo com pouca atenção de um livro, proveniente de um ano de C ++). O Pygame é um invólucro em torno das bibliotecas SDL do C, portanto, provavelmente não possui a mesma quantidade de funcionalidade que o XNA.

O Pato Comunista
fonte
0

Outro voto para a Unidade . Nos próximos anos, você terá muito tempo para estudar CS para envolver C ++ e outros idiomas. Se seu objetivo é desenvolver um jogo, ficar preso ao que é essencialmente o trabalho de desenvolver um mecanismo levará muito tempo. Se você quer ser um projetista de mecanismo, definitivamente volte e tente a implementação de nível inferior.

O mecanismo do Unity permitirá abstrair a maioria dos detalhes para que você possa se concentrar na programação do jogo. A comunidade nos fóruns e o Unity Answers, com base no Stack Exchange, são incrivelmente úteis. Você pode programar em Javascript ou C #. Vindo de Java, comecei com Javascript porque muitos dos tutoriais foram escritos para ele, mas mudei para C # (que era uma opção bastante fácil).

Eu acho que o XNA e o Pygame também podem ser bons (já que eles abstraem algumas das coisas mais tediosas), mas não tenho experiência com eles.

Finalmente, não mire muito grande no seu primeiro jogo. Pode ser muito fácil subestimar o tempo gasto na implementação de recursos em um jogo. Comece com uma mecânica de jogo principal que permite que você instale o jogo rapidamente. Então você pode começar a adicionar outros elementos.

Diverta-se!

acmshar
fonte
0

O XNA é uma ótima solução se você estiver saindo do Java. O C # terá a aparência e a leitura quase idêntica do java para você, para que você possa entrar rapidamente, sem aprender uma nova sintaxe. A estrutura XNA fornece toneladas de boas APIs para trabalhar, e há muitos códigos abertos gratuitos de "licença permissiva da microsoft" para você iniciar alguns projetos.

Eu não recomendaria o uso de Java, a maioria das APIs gráficas é péssima, não há muito suporte 3D e, geralmente, o Java fica lento; não é grande coisa para a maioria dos aplicativos java, mas os videogames precisam de MUITO desempenho.

C ++ é a maneira de fazer videogames, praticamente período. No entanto, ir de java -> C ++ será bastante chocante. Sem mencionar que a maioria dos programas gráficos hardcore de baixo nível é realmente do estilo C, não do C ++, então você fará um monte de aritmética de ponteiros para tentar obter mais desempenho. Pode ser interessante, mas demorado. Também pode demorar muito para você começar.

Existem muitos bons mecanismos de jogo por aí, como o Ogre, mas você precisa gastar muito tempo aprendendo a fazer as coisas primeiro, pois pode parecer muito complicado.

Tenha cuidado, por mais impressionantes que sejam suas idéias sobre jogos, lembre-se de que os videogames são caros, demoram muito tempo para desenvolver e têm grandes equipes de desenvolvimento.

Se você quer criar um jogo e ser a única pessoa que trabalha nele, você quase terá que transformá-lo em um jogo 2D (embora deva começar com o 2D de qualquer maneira) e terá que começar REALMENTE, REALMENTE simples.

Quase qualquer coisa que você possa imaginar que seria divertida provavelmente é muito ambiciosa no momento.

Meu conselho: Obtenha o visual studio 2010 express grátis, se você não o possui. Faça o download do estúdio de jogos XNA e da estrutura .net 4. Faça o download de uma demonstração do XNA. Execute a demonstração, veja o código e veja o que faz o quê. Tente ler alguma documentação sobre como o XNA faz jogos 2D.

ENTÃO, escolha seu jogo favorito da velha escola, super fácil. Pac-man? Pong? Asteróides? Invasores do espaço? Mario? Escolha algo ESTÚPIDO, ESTÚPIDO fácil. Depois, refaça o jogo exatamente como estava. Você precisa se preocupar com a programação e o aprendizado de uma nova API que NÃO precisa se preocupar com o design do jogo; isso apenas irá distraí-lo.

Então, depois que o seu mario clone estiver funcionando ou o que você fez, você pode começar a experimentar o jogo e tentar adicionar coisas novas.

Comece pequenos passos de bebê, e será muito mais divertido e você aprenderá muito mais.

Tente pular para modificar o código-fonte do Quake3 em C ++ para criar um jogo e você ficará realmente frustrado, e mesmo que funcione, você não aprenderá muito com isso.

APENAS DIVERTIR: D

SpacePrez
fonte
0

Instantâneo

O AS3 do Flash é uma linguagem fantástica para entender os conceitos importantes de POO sem ter que se preocupar com gerenciamento de memória e gravação de arquivos de cabeçalho. É também um mecanismo de jogo 2D completo, com uma árvore de exibição, sistema de eventos e todos os tipos de outros recursos úteis.

Há uma enorme comunidade de desenvolvedores de jogos em Flash por aí e, ao contrário da crença popular, você pode desenvolver jogos em Flash usando ferramentas de código aberto. Se você estiver no Windows, recomendo o FlashDevelop .

Eu diria que o Flash é ainda mais compatível com várias plataformas do que Java ou qualquer outra tecnologia, exceto talvez o Unity. 99% das pessoas podem ver itens em Flash no navegador da área de trabalho, por isso é fácil compartilhar suas criações com o mundo. A maioria dos smartphones está lentamente recebendo suporte ao Flash e, para iOS, a única plataforma que não oferece suporte ao Flash no navegador, você pode criar aplicativos com o Flash CS5 (embora isso tenha um custo).

Eu acho que seria uma pena você ter que lutar com algo mais complexo como C ++ ou C # quando você pudesse começar a aprender o básico da criação de jogos agora mesmo com o AS3. Depois de entender o AS3, será fácil mudar para outros idiomas posteriormente. No meu caso, eu era desenvolvedor de Flash, mas aprendi a programar com o Objective-C e consegui criar um jogo de sucesso para o iPhone. Faça um favor a si mesmo e visite http://www.flashgamedojo.com/ - Não acho que você ficará desapontado!

Unidade

O Unity tem muitos dos mesmos benefícios do Flash, mas em 3D.

Com o Unity, você pode programar em C # ou no UnityScript (que é javascript-y). Não é de código aberto, mas é gratuito. É muito bem suportado e há uma ótima comunidade. O problema com o desenvolvimento de jogos 3D é que, para a maioria dos jogos, você precisará de muita arte e recursos. Isso também pode ser um problema nos jogos 2D, mas geralmente a arte 3D leva muito mais tempo e é muito mais difícil criar "arte de programador".

Uma nota sobre código aberto

Não há nada errado em usar software de código aberto, mas você está se enganando se estiver usando apenas porque é de código aberto. Escolha o melhor idioma e ferramentas que ajudarão você a aprender o mais rápido com o mínimo de atrito. Na mesma linha, a mentalidade de "aprender a coisa mais difícil primeiro" (ou seja, C ++) é louca. O que você realmente deveria aprender é a lógica, não a sintaxe; portanto, aprenda o idioma que tiver menos bagagem e barreiras à entrada. Na minha opinião, isso é AS3.

Matt Rix
fonte