我发现我通过榜样学得最好。是否有一个很好的网站或代码库来展示事件处理,碰撞检测,建模和基本3D绘图的工作原理?
我试图开始的游戏是一个简单的赛车游戏,用户控制一个小型太空船,并通过航道,小行星领域,太空殖民地和各种其他障碍物(我知道,真正的原始)进行导航。运动有三个方面。游戏应该知道航天飞机何时遇到障碍物。 是定义的轨道,就像大多数赛车游戏(电路和线性路径)一样。
按箭头键可使方向矢量适当旋转。此外,例如,当用户按下空格键时,船应该使用类似加力燃烧器的东西。上下移动也是一种选择。
答案 0 :(得分:4)
不知道你的初始技能水平我建议你看一下Ogre3D。它是一个完整的3D渲染引擎,具有非常干净的界面,易于扩展,最重要的是,它可以在Windows,Linux和Mac OS X上进行多平台工作。提供的示例和教程非常自我解释。 / p>
如果您想从头开始编写自己的OpenGL-only引擎,Ogre3D可能无法遵循...
答案 1 :(得分:4)
如果您想学习OpenGL,我建议以“OpenGL Red Book”开头,然后查看NeHe's samples。红皮书至少是免费的在线HTML格式,也有可下载的PDF文件。
然而,Red Book和NeHe将主要教你如何使用OpenGL;写游戏就是艺术,而且有太多的东西无法解释,学到的东西太多了,而且阅读量太大了。这只是一个提示。
这是大多数游戏的基本结构。希望它有助于基础知识。当然,它不是一个完整的游戏,不会运行,并且很大程度上取决于你如何做事,但它应该给你一个基本的想法。
void update(float k)
{
// k == time in seconds since last update; e.g. 0.02
ship.y += ship.speed_y*k;
}
int main()
{
while(1)
{
if(hasEvents())
{
event_t evt;
getEvent(&evt);
if (evt.type == keypress && evt.key==down)
{
ship.speed_y=1;
}
}
paint();
new_ticks = get_ticks();
update((new_ticks - old_ticks)/1000.);
old_ticks = new_ticks;
}
}
答案 2 :(得分:3)
一些注释,其中一些已经说明:
游戏开发是一个庞大的多方面学科。即使你有非常扎实的数学和编程技能,这也很有挑战性。
两条建议:
答案 3 :(得分:2)
当我学习opengl时,这个网站帮助了更多。
答案 4 :(得分:1)
我不知道你有多少游戏编程经验,但我会从一些有限的东西开始。
从2d基于平铺的游戏(推箱子等)开始 - 它们相对容易编写 - 对象总是精确地放在平铺上,这使得事情变得非常简单。
一旦你掌握了原理,游戏循环,计时,处理用户输入,数据模型,渲染器等,你就可以做更多的事情。
然后你可以尝试类似“小行星”的东西,它需要一些2d矢量数学,建模intertia(即积分)可能有点触发。和非基于瓦片的碰撞系统。
一旦你得到那个舔,那么你可以尝试一些3D - 这会使事情变得更加复杂,数学方面。
答案 5 :(得分:1)
我会浏览www.gamedev.net,它包含一些针对初学者的优秀教程,在论坛中,您可以找到有关游戏编程相关主题的大量信息。
答案 6 :(得分:1)
首先,您应该考虑代码的结构。每场比赛都有以下几种变化:
int main()
{
Screen::Init();
Game::Init();
while (Game::isrunning)
{
Game::Update();
Screen::Render();
}
Game::Shutdown();
return 0;
}
其余的只是一个实现细节。尝试查看SDL,它处理Windows编程的许多讨厌的事情(初始化窗口,加载OpenGL等),这样你就可以专注于编写游戏。
答案 7 :(得分:1)
我必须发出使用nehe的警告,因为很多人都推荐过它。(没有帐号可以发表评论,抱歉)
主要是因为它只显示了如何使用固定管道而不是着色器进行操作。前几个教程可能没问题就是如何在屏幕上获取内容。但是不要浪费你的时间,例如学习如何激活alpha混合和为固定管道设置照明,因为如果你想做一些看起来不像1999年的游戏,你将不得不重新学习如何做所有这些东西,但与着色器。最好从imo开始学习新方法。
答案 8 :(得分:1)
首先,我不建议您在第一场比赛中使用OpenGL,特别是如果您之前从未编程过。您应该强烈考虑使用C#等XNA的更新更简单的方法。
其次,和OpenGL一样,XNA在互联网上也有大量的教程,我相信你会发现它们非常有用。
如果您以前从未完成过编程,我建议您作为一个开始项目,尝试创建一个非常简单的游戏,如Pong或Tic Tac Toe。我认为你会对游戏开发有一个很好的感觉。从那里,你可以从你通过创建Pong获得的经验开始你的实际项目。
最后,无论您在制作游戏时遇到什么样的障碍,我在你的任务中冒险时可以给你的主要建议就是永不放弃。
祝你好运! ^^答案 9 :(得分:0)
是的,在线查找教程。是的,在GameDev.net上闲逛。是的,NeHe令人困惑和专业。
对于OpenGL,我会结合OpenGL SuperBible's能力,让人们了解OpenGL的背景和可能性以及老式的谷歌搜索。
了解可以不时帮助您的人也很有帮助。 GameDev.net有聊天室,人们很友好。
答案 10 :(得分:0)
如果你想要opengl但是有了python的简单性 - 最初可以很好地理解API的原理 - 查看包装器:http://pyopengl.sourceforge.net/
它们与最新版本的opengl兼容,并且它们的开发非常活跃。