Minotaur Arcade Vol1 supporting Looking Glass

Hi,
I don’t know how to put this here anyway let’s say we created our first commercial product supporting Looking Glass.

It’s added in as “experimental” in the sense that things are not - yet - super optimised for it but it does work and it’s as “an extra” in our game engine.

Unfortunately as it’s part of an “upgrade” to our existing game ( apologizes for “shameless promotion” ) “Minotaur Arcade Volume 1” is present as BETA ( which means you had to have purchased a copy of the original to try it ) on Steam

STEAM - Minotaur Arcade Volume 1

It’s quite playable and it’s all OpenGL based, if it does happen you have that game you can try now the BETA and see how it works.

Overall we plan to continue to support Looking Glass for all our future games however “as soon as possible” I am planning another “technology migration” I have future plans to ditch OpenGL in favour of Vulkan and re-make a “totally new custom Vulkan driver” for our game engine with specific emphasis on VR and LG.

There was this short video we done some months ago

Small video

Overall we are still very happy about LG and we want to continue to support this technology.

So in case you have that game you can try the BETA in case you don’t well … it’s a really nice game :blush:

Cheers.

3 Likes

This looks fantastic! Just bought it and switched to the beta channel.
I’m having trouble getting it to run on my machine - selecting “Looking Glass” and setting the resolution to 2560x1600/ fullscreen doesn’t seem to do anything - I get the game in windowed mode and there’s no lenticular shader being applied.
Rest assured that I was very careful to ensure that the calibration + drivers were not the problem. :slight_smile: If it makes a difference, I’m running the “fast” Windows insider preview. Will try on another machine shortly…

Hi,
I think there could be some problem IF your looking glass is NOT the “primary display device” or sorta, the code I used tries to basically looking for an ‘id string’ but look I am literally using this sort of stuff

Blockquote

	int count;

	count = 1;

	GLFWmonitor** monitors = glfwGetMonitors(&count);

	GLFWmonitor* the_monitor;

	// the default PRIMARY monitor
	the_monitor = NULL;

	bool foundLKG = false;

	if (flags == INIT_FLAGS_USE_LOOKING)
	{
		const GLFWvidmode* vidMode = NULL;

		if (count > 1)
		{

			// first search for a 2560 x 1600 monitor
			for (int i = 0; i < count; i++)
			{
				vidMode = glfwGetVideoMode(monitors[i]);
				if (vidMode->width == 2560 &&
					vidMode->height == 1600)
				{
					the_monitor = monitors[i];
					foundLKG = true;
				}
			}

			// now search by name, which seems to be unreliable
			for (int i = 0; i < count; i++)
			{
				std::string lowerName = glfwGetMonitorName(monitors[i]);
				PRINTF("Found: %s\n", lowerName.c_str());
				std::transform(lowerName.begin(), lowerName.end(), lowerName.begin(), ::tolower);
				if (lowerName.find("looking") != std::string::npos ||
					lowerName.find("lkg") != std::string::npos ||
					lowerName.find("holoplay") != std::string::npos)
				{
					the_monitor = monitors[i];
					foundLKG = true;
				}
			}


			//PRINTF("Monitor name : %s\n", glfwGetMonitorName(monitors[1]));
			//the_monitor = monitors[1];
		}

		if (foundLKG == false)
		{
			PRINTF("Looking glass monitor NOT found\n");
			flags == INIT_FLAGS_USE_NORMAL;
			*isWindowed = true;
			the_monitor = NULL;
		}
		else
		{
			*isWindowed = false;
			// whatever it likes
			if (vidMode)
			{
				glfwWindowHint(GLFW_REFRESH_RATE, vidMode->refreshRate);
				refresh_rate = (float)vidMode->refreshRate;
			}

		}

	} // if (flags == INIT_FLAGS_USE_LOOKING)

Blockquote

But I think i’ve seen a few times that unforuntately “that strings” never contains any of those info.

Try to mess up a bit with monitors, it’s still a beta and no should NOT go “full screen” I mean just leave it as “Looking Glass”, maybe try to remove the fullscren flag.

It’s BETA … but once it starts it should go ok, I’ll check a bit more later this afternoon.

Cheers.

Hey,

Yep, the GLFW monitor name strings are, as far as I can tell, a bit of a lie. On macOS they return the values you expect (“LKGxxxxxxx”) but on Windows they return something like “\DISPLAY1” or some such; it has to do with the way the displays are enumerated in the registry.

FWIW, I could not get the window to go fullscreen, or the lenticular shader to appear, with any of the following configurations (all of them with resolution set to 2560x1600, websocket driver verified enabled, “Looking Glass” button used to launch game):

  • Looking Glass set to main display, fullscreen off
  • Looking Glass set to main display, fullscreen on
  • All other displays disabled, fullscreen off
  • All other displays disabled, fullscreen on

I’ve been working on a way to consolidate these kinds of issues basically ever since we last corresponded, and there are some new developer tools in the pipeline very soon that I hope will help to resolve a lot of these exact issues - hopefully ultimately we will be able to abstract away the headache of calibration and windowing (both of which have been irritating us ever since we released the first few versions of the SDK) as much as possible.

So, you can expect this project to be released shortly – it’s an RPC service through which you can request both calibration and window coordinates.
In the meantime I really want this game to work reliably, so I can share with you something I worked on as a potential stopgap measure: here’s a modified version of the calibration load executable that exposes window coordinates of the Looking Glass display; you can find them by launching the exe with -m flag from the command line.