Jump to content

Turbo Game Engine Beta Update

Josh

821 views

The Turbo Game Engine beta is updated! This will allow you to load your own maps in the new engine and see the speed difference the new renderer makes.

Image1.jpg.04b723610eefcf20ce0575ae83869cbd.jpg

  • LoadScene() has replaced the LoadMap() function, but it still loads your existing map files.
  • To create a PBR material, insert a line into the material file that says "lightingmodel=1". Blinn-Phong is the default lighting model.
  • The red and green channels on texture unit 2 represent metalness and roughness.
  • You generally don't need to assign shaders to your materials. The engine will automatically select one based on what textures you have.
  • Point and spot lights work. Directional lights do not.
  • Setting the world skybox only affects PBR reflections and Blinn-Phong ambient lighting. No sky will be visible.
  • Physics, scripting, particles, and terrain do not work.
  • Variance shadow maps are in use. There are currently some problems with lines appearing at cubemap seams and some flickering pixels. Objects should always cast a shadow or they won't appear correctly with VSMs.
  • I had to include glew.c in the project because the functions weren't being detected from the static lib. I'm not sure why.
  • The static libraries are huge. The release build is nearly one gigabyte. But when compiled, your executable is small.
#include "Leadwerks.h"

using namespace Leadwerks;

int main(int argc, const char *argv[])
{
	//Create a window
	auto window = CreateWindow("MyGame", 0, 0, 1280, 720);

	//Create a rendering context
	auto context = CreateContext(window);

	//Create the world
	auto world = CreateWorld();

	//This only affects reflections at this time
	world->SetSkybox("Models/Damaged Helmet/papermill.tex");

	shared_ptr<Camera> camera;

	auto scene = LoadScene(world, "Maps/turbotest.map");
	for (auto entity : scene->entities)
	{
		if (dynamic_pointer_cast<Camera>(entity))
		{
			camera = dynamic_pointer_cast<Camera>(entity);
		}
	}

	auto model = LoadModel(world, "Models/Damaged Helmet/DamagedHelmet.mdl");
	model->Move(0, 1, 0);
	model->SetShadowMode(LIGHT_DYNAMIC, true);

	//Create a camera if one was not found
	if (camera == nullptr)
	{
		camera = CreateCamera(world);
		camera->Move(0, 1, -3);
	}

	//Set background color
	camera->SetClearColor(0.15);

	//Enable camera free look and hide mouse
	camera->SetFreeLookMode(true);
	window->HideMouse();

	//Create a light
	auto light = CreateLight(world, LIGHT_POINT);
	light->SetShadowMode(LIGHT_DYNAMIC | LIGHT_STATIC | LIGHT_CACHED);
	light->SetPosition(0, 4, -4);
	light->SetRange(15);

	while (window->KeyHit(KEY_ESCAPE) == false and window->Closed() == false)
	{
		//Rotate model
		model->Turn(0, 0.5, 0);

		//Camera movement
		if (window->KeyDown(Key::A)) camera->Move(-0.1, 0, 0);
		if (window->KeyDown(Key::D)) camera->Move(0.1, 0, 0);
		if (window->KeyDown(Key::W)) camera->Move(0, 0, 0.1);
		if (window->KeyDown(Key::S)) camera->Move(0, 0, -0.1);

		//Update the world
		world->Update();

		//Render the world
		world->Render(context);
	}

	Shutdown();
	return 0;
}
  • Like 5


4 Comments


Recommended Comments

Hi! Sorry for question, but can anyone explain me, what exactly Turbo Game Engine is? Is it LE 5.0 but rebranded, or that's the another engine fork?

Share this comment


Link to comment
6 hours ago, adams-antology said:

Hi! Sorry for question, but can anyone explain me, what exactly Turbo Game Engine is? Is it LE 5.0 but rebranded, or that's the another engine fork?

It will be the next version of Leadwerks, with new name.

  • Like 1
  • Upvote 1

Share this comment


Link to comment

Have you ever considered switching to a text map format on a flexible format like Json that allows for expansion, addition of fields, without breaking the loading of the map itself? The idea being we can add fields to entities and if said entity has a script those fields get added to the script? It could aid in external tooling. Just a thought.

  • Like 1

Share this comment


Link to comment
On 8/24/2018 at 1:48 PM, Rick said:

Have you ever considered switching to a text map format on a flexible format like Json that allows for expansion, addition of fields, without breaking the loading of the map itself? The idea being we can add fields to entities and if said entity has a script those fields get added to the script? It could aid in external tooling. Just a thought.

Also it is good for version control. Even better it allows people to develop tools that will allow for simultaneous  multi-user editing.

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Create Your Account

Sign in

Already have an account? Sign in here.

Sign In Now
×