1

我刚刚用 C++/Allegro 完成了一个 2d 平台游戏。它还处于不完整的阶段...

我想知道如何让从事游戏开发的人进行同行评审。我想审查我的项目,理由是

  1. 游戏
  2. 碰撞检测
  3. 面向对象的使用
  4. 声音、效果等的编程
  5. 任何进一步的想法
  6. 我本可以做得更好的方法
  7. 优化方法

当前的代码在某些地方看起来像垃圾......所以你能建议一些简化技术吗?

您可以在更新的链接中查看我的项目(如果您愿意) - nincompoop (直接链接)

http://ideamonk.googlepages.com/nincompoop_distro.rar

到目前为止,我正在切换到 C# 和 XNA,发现学习一切都非常容易和快速,因为我印象深刻 -

http://catalog.xna.com/GameDetails.aspx?releaseId=341

我不打算在这里销售任何产品或推广任何东西......我的目的是从更好的人那里获得更好的建议。至于我上传项目的页面,它不受任何类型的广告支持。所以请放心。

4

2 回答 2

3

我在您的源代码中注意到的第一件事是,您的大部分游戏逻辑都在 main.cpp 文件中,嵌套深度多达 11 个选项卡!出于代码组织的目的,这是一场噩梦。当然,我在第一场比赛中也这样做了。:) 您可以做的第一件事是简化您的主游戏循环,使其看起来像这样:

int main () 
{
    game_object gob;
    gob.init_allegro();
    gob.load_assets();
    while(true) {
        gob.handle_inputs()
        if (!gob.update())
            break;
        gob.render();
    }
    gob.cleanup();
}

其他所有内容都应该重构到您的 game_object 类中。这样管理起来会容易得多,而且您的代码实际上可能适合页面,因为您可以避免深度嵌套。如果您发现代码的深度超过 3 个标签,那么无论您在做什么,都需要将其重构为另一个方法,甚至是一个单独的类。

我的第二个建议是将你的 goto 替换为更理智的东西,如下所示:

bool playerwins = check_win_condition();

if(playerwins) {
    // win condition code
} else {
    // lose condition code
}
于 2008-10-31T17:09:41.893 回答
1

回顾上一集——

我不明白为什么人们投票反对你并冒犯你。保持良好的工作...... – Daok(27 分钟前)

要求同行评审有什么严重的错误吗?在按下向下按钮之前想一想,明天你可能也需要同行评审!– Abhishek Mishra(26 分钟前)

@Daok:这就是我 58 秒前想知道的!– Abhishek Mishra(25 分钟前)

这很愚蠢。它可能不符合 SO 问题的典型模式,但同行评审并不是一件坏事,更不值得攻击,更不用说 4 票反对。——托马斯·欧文斯(23 分钟前)

@Mitchel Sellers:你知道吗,我在做这个项目的时候就游戏开发进行了很好的讨论......所以我认为把它放在 fr 审查会很好......但是 @stackoverflow ......事情真的伟大的!ycombinator 人群更加聪明,他们提出了惊人的反馈——Abhishek Mishra(21 分钟前)

我认为这可能是问题的短语和语气。这听起来更像是产品公告,而不是寻求帮助的问题。如果它被表述为“如何正确地对我的项目进行同行评审”等,那么人们可能就不那么苛刻了。——马克·英格拉姆(21 分钟前)

关键是,这不是 Stack Overflow 的用途。它用于询问特定的技术问题。– Remi Despres-Smyth(19 分钟前)

哎呀......是的,当我输入问题时,它在我脑海中滚动......让我把它改写成一个真正的问题!:) – Abhishek Mishra(18 分钟前)

并且人们也可以就如何改进游戏提供技术反馈......此外,我也将源代码提交给审查!有什么办法可以再次提出问题吗?– Abhishek Mishra(17 分钟前)

我已经要求进行代码审查,并在此处收到。Abhishek,如果有人重新打开它并且您可以对其进行编辑,请查看以下问题:K&R 练习:我的代码有效,但感觉很臭;清理建议?作为代码审查问题示例。——约翰·鲁迪(12 分钟前)

@约翰:谢谢!希望它有效!

于 2008-10-29T14:12:01.727 回答