xu4-engine/u4

Sanity Check: OpenGL requirement.

Closed this issue · 5 comments

Decades long player of xu4 here.

Ultima 4 ran on a 1mhz, 8-bit Apple ][.

XU4 ran with almost no cpu use on many, many devices, which did not have openGL support.

Can you please explain why you've added opengl as a requirement? XU4 is a game that does nort inherently require opengl. Many devices do not have opengl or GPU, and will no longer be able to run XU4.

Thank you for your consideration. Very interesting to follow your many commits. Thanks for the work!

u4_terminal_example
I've been mucking about with terminal graphics for a while and it would be a treat to run it in xterm (even over ssh).

Unzip and 'cat' either the sixel (.six) or ansi (.ans) file to view them. The former requires a terminal with sixel support (e.g. uxterm -ti vt340) and the latter requires a utf-8 terminal with 24-bit color support font with unicode block drawing characters.
xu4-terminal.zip

I'll try to catch up with your changes, again thanks for all the work!

One of my goals is to allow the program to run both 2D & 3D games, so work on getting GPU support began immediately when I started. GPUs seem ubiquitous in an age where even wrist watches have them.

Last year I had an alternate GL rendering path for the world view working (see the GL preview snaphot). The scrolling water, waving flags, & campfire are all drawn via shader. This is currently enabled at build time with a macro so there is no run-time support for switching display output. Perhaps support for terminal output could start in a similar way, but I never considered such a thing.

A general purpose game engine for 2D and 3D games is taking things far out of scope for xu4 - which is an Ultima 4 engine.
Have you considered forking to a different project name?

There was a discussion of my plans in the forum before I started work on the project, so nothing unexpected has been done. The previous developers always intended for it to be more as can be seen in their FAQ (stating the desire to run Ultima 1-5) and the introduction of the XML configuration & scripting to allow for customizing the game.

The program named xu4 should always be able to run Ultima IV using the original game data, but my intent is to really stretch what the engine can do. If your focus is more limited then perhaps the u4-decompiled project would be a better starting point, as it was for the ANKH-VR project.

Code is malleable, so the idea of forking is misguided and should only be done as a last resort. There were already two forks of xu4 and neither of them did much (if anything) to fully implement the original game.

Having a render path dedicated to CPU blitting would be great, but work will have to be done to support multiple paths. Terminal output is a niche use case and most users (especially on mobile devices?) will be better served by making use of the GPU.