Page 1 of 1

Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Wed Mar 15, 2017 3:46
by Multimania
It's still Keen Day over here, so I'm taking the opportunity to release v1.0 of Omnispeak.
Omnispeak is an (almost) complete, bug-for-bug reimplementation of Keen 4, 5, and 6 for Windows and Linux.

Homepage: https://davidgow.net/keen/omnispeak.html
Windows: https://davidgow.net/files/omnispeak-win32-1.0.zip
Linux: https://davidgow.net/files/omnispeak-linux-1.0.tar.gz
Source code: https://github.com/sulix/omnispeak

The downloads include Keen 4 v1.4 already set up, but this release also supports Keen 5 v1.4 and Keen 6 v1.4 & v1.5.

Image

To set up another episode, you need to copy the EGAGRAPH, GAMEMAPS, and AUDIO files into the game directory, along with the contents of the data/keen<ep> directory. If you've got multiple copies in the same directory, you can use the /EPISODE <ep> command line option to select one.

Omnispeak is also (hopefully) compatible with the savegames from those versions of Keen, so you can copy them back and forth as you wish.

Image

Omnispeak is still missing a few things, though:
  • There's not much by way of modding support yet. You might be able to get some levelpacks to work, but patches, for example, aren't supported.
  • Joystick support is buggy and incomplete, and neither gamepad or mouse support exists.
  • Some of the debug cheats (notably Demo recording) aren't implemented.
  • The new settings (Fullscreen, Aspect ratio, and Overscan border) aren't saved anywhere.
  • A few internal things in the engine still work slightly differently, though this shouldn't ever affect gameplay.
This wouldn't have been possible without the huge amount of work NY00123 and lemm have put in, either.

Happy Keening!

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Wed Mar 15, 2017 12:38
by lemm
:pogo

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Wed Mar 15, 2017 12:45
by Nisaba
I gave Omnispeak a shot, and I muss say: pretty pretty sleek!!! You guys put a hole lot of work in there too make this feel so smooth. it does what it should and you don't need DOS or any external emulator to run the game. Impressive!

what bothers me a bit is that the aspect ratio and the overscan border aren't saved anywhere. but you've already pointed that out.
Nevertheless this engine has a whole lot of potential! I'd love to see some mod support for it. this could lift things to a new level.

from now on I'm gonna use it as my favored K4 engine.

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Wed Mar 15, 2017 21:52
by K1n9_Duk3
I haven't tested this yet, but I have to say I'm very glad to see a faithful Keen:Galaxy reimplementation. I'm also glad that I didn't waste (too much of) my time trying to create my own Keen:Galaxy reimplementation.

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Thu Mar 16, 2017 5:24
by gerstrong
Should I merge some of the stuff into CG? I see the scanborders and Starwars text to be useful for my implementation. Hope that's okay for you...

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Fri Mar 17, 2017 4:23
by Multimania
gerstrong wrote:
Thu Mar 16, 2017 5:24
Should I merge some of the stuff into CG? I see the scanborders and Starwars text to be useful for my implementation. Hope that's okay for you...
Feel free!

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Fri Mar 17, 2017 11:34
by NY00123
Here it is, essentially the whole thing.

For the coders around here (but also non-coders):

This time, we used some kind of a dumper that, well, dumps the in-game state and objects once for each PlayLoop iteration. This was done so we could compare demo playbacks of Vanilla Keen 4-6 and Omnispeak.

In the Omnispeak codebase, simply look for CK_ENABLE_PLAYLOOP_DUMPER. For Vanilla Keen, there are a few patches in the following link. You can also find a dump printer, which prints each binary dump file as multiple sequences of hex numbers.

Link: https://github.com/sulix/omnispeak/tree/master/tools

Side-note: Still haven't uploaded a version of CKPATCH supporting Keen 6 v1.5...
gerstrong wrote:
Thu Mar 16, 2017 5:24
Should I merge some of the stuff into CG? I see the scanborders and Starwars text to be useful for my implementation. Hope that's okay for you...
I surely have no problem with this. Interestingly, you may have possibly spotted that reflection-keen shows the border in games too, although it isn't really used in Keen Dreams (unless MM_SortMem is called for some weird reason).

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Sat Mar 18, 2017 3:16
by lemm

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Sat Mar 18, 2017 16:53
by Zilem
WoW what happened!? I left like i was back in 1995 on my first PC, for a minute there...
Run Keen better then Dosbox, no random stutters. and even in wide-fullscreen what sorcery is this!?

Will there be a command line to select a data folder, it the future?
when mod support gets implemented, to keep data files separate.

will there be Support for Netkeen or even co-op in the future?
and is there possibility of a Android port in the mists?

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Sat Mar 18, 2017 21:14
by DoomJedi
Runs and plays wonderfully, what a surprise....I love this community so much...

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Sun Mar 19, 2017 12:00
by Levellass
So wait... what do those vanilla patches do? How do I access whatever it is they're doing?

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Sun Mar 19, 2017 22:32
by NY00123
Levellass wrote:
Sun Mar 19, 2017 12:00
So wait... what do those vanilla patches do? How do I access whatever it is they're doing?
As stated above, their purpose is dumping in-game data, once for each call to PlayLoop.
Before experimenting with this, though, just one, erm, "notice" is incoming.

SOME WORDS OF A WARNING: Be sure you have enough free space. The dumper writes ~7688 bytes per call to PlayLoop (the exact amount depends on the gamestate size, given by the episode number). Assuming 35 calls to PlayLoop per second, this means that more than 15MB may be written under a *single minute*. The rate may be reduced by a factor of 3 for demo recording/playback, but the impact is still there.

Using the dumper patches under DOS: Run CKxPATCH as usual, while further redirecting standard output to the desired dump file. Example:

Code: Select all

CK4PATCH K4E14DMP.PAT > DUMP.BIN
Note that if you do not redirect standard output, you should expect to see the dumped data as on-screen "garbage" (and possibly also observe some other unexpected behaviors).

Running the dumper within Omnispeak: Built Omnispeak from the sources with WITH_DUMPER=1 set. Afterwards, whenever Omnispeak is started, use /DUMPFILE to specify the output dump file

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Posted: Sun Mar 26, 2017 20:05
by NY00123
OK, this *is* somewhat off-topic, but since it kind-of-started following the support for Keen 6 v1.5 in Omnispeak...

I've uploaded yet another unofficial update to CKPATCH. It now supports Keen 6 v1.5. In addition, it can be used with the original PKLITE-packed Monster Bash executables (i.e., there's no need to unpack them).

It should be compatible with that k6e15dmp.pat file, currently found under omnispeak/tools/kdumper (https://github.com/sulix/omnispeak/blob ... e15dmp.pat).

For more details you can check this out: https://keenmodding.org/viewtopic.php?p=21358#p21358