65.9K
CodeProject 正在变化。 阅读更多。
Home

游戏引擎

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.78/5 (6投票s)

2009 年 11 月 20 日

CPL

2分钟阅读

viewsIcon

49630

downloadIcon

1564

游戏引擎的第一个原型。

引言

该引擎代号为 wg3dfx,运行于 DirectX API 环境中,这意味着它适用于所有版本的 Windows(从 2000 版本到 Windows 7)。引擎使用 Truevision SDK 6.5,为了确保 Truevision 的正常运行,您需要下载 SDK 6.5 并将 MTV3D65.dll 设置为引用。对于音频支持,wg3dfx 使用了 irrKlang,您需要下载并安装它。您可以在 woodgamesfx 找到更多信息。

我将这段代码集合称为游戏引擎,因为它几乎包含了游戏引擎的所有元素。您可以按原样使用它,也可以改进代码的某些部分。

背景

以下是一些截图

Using the Code

该项目分为三个代码部分:单元、场景和游戏引擎部分。

例如,这是主游戏引擎循环

public void GameLoop()
{
    while (bLoop)
    {
        fTime = TV.AccurateTimeElapsed();

        if (SimuLatePhysics)
        {
            Fizika.PhysX.Simulate(TV.TimeElapsed() * 0.0025f);
        }
        if (Teren.Land == null)
        {
            Kamera2.Update(TV.TimeElapsed());
        }
        else
        {
            Kamera2.UpdateTerrainCamera(ref TV,  Teren.Land  );
        }
        GetMouseLandPosition = Teren.GetTerreinPosition(ref Scene, 
                               Kamera2.tmpMouseX1 ,Kamera2.tmpMouseY1 );
        UpdateScene();
        TV.Clear(false);
        Teren.DrawTerrain();
        if (SkyBoxs.Atmos != null)
        {
            SkyBoxs.DrawSkyBox();
        }
        Svijetlo.RenderLight();
        XActor.CrtajJedinice("Sve",ref Text2D,ref Globals );
        XModel.CrtajJedinice("Sve");
        Scene.FinalizeShadows();
        Partikali.DrawParticles("All");
        if (PodlogaTest != null)
        {
            PodlogaTest.DrawFlor();
        }

        if (Oblaci.Atmos != null )
        {
            Oblaci.DrawClouds();
        }

        if (Magla.Enabled)
        {
            Magla.DrawFog();
        }

        if (Voda != null)
        {
            Voda.DrawWatter();
        }       

        if (bDrawCoordinateSystem)
        {
            DrawCoordinateSystem();
        }
        VMannager.DrawVehicale();
        VMannager.CheckInputs(Kamera2._inputs, ref Fizika.PhysX);

        Dekoli.RemoveDecals(TV);
        Dekoli.DrawDecals();
        Scene.RenderAllMeshes(true);
        Scene.RenderAllActors(true);
        if (Kamera2.tmpMouseB1)
        {
            XActor.DeselectUnits();
        }

        if (Kamera2.tmpMouseB1)
        {
            Screen.Action_Begin2D();
            Screen.Draw_Box(XActor.Mouse1Coor.x,
            XActor.Mouse1Coor.y, XActor.Mouse2Coor.x,
            XActor.Mouse2Coor.y, Globals.RGBA(0, 1, 0, 1));

            Screen.Action_End2D();
        }
        XActor.UpdateActors(Kamera2.tmpMouseX1, Kamera2.tmpMouseY1, 
                            Kamera2.tmpMouseB1, Scene, Kamera2._inputs);
        TV.RenderToScreen();
        Application.DoEvents();
    }
}

总共有大约 12,000 行代码,分布在所有三个部分中。

关注点

我很快就会发布开源引擎的第一个版本。引擎目前处于开发阶段,代码的某些部分尚未完全记录。我禁止将代码片段、分发库和可执行文件用于侮辱宗教、种族、民族和性别,或者对其他代码造成损害,或使用随 WoodGamesFX 附带的文件。只要符合上述条件,软件代码和支持文件可用于教育、商业和非商业目的。对于上述条件下的代码使用,我将不承担任何责任。

我希望这些信息和内容能对对创建计算机游戏、模拟或其他形式感兴趣的个人或团体有所帮助。我们建议您将这些信息用于娱乐和学习。

历史

我开发这段代码已经几个月了。如果您对如何使用代码有任何疑问,请通过 info@woodgamesfx.com 发送电子邮件给我。

© . All rights reserved.