Omnispeak 1.0: A Keen:Galaxy reimplementation

Here is where to post about the latest Commander Keen fangame or modification you've finished, a new website you've made, or another Keen-related creation.
Post Reply
User avatar
Multimania
Grunt
Posts: 20
Joined: Sat Nov 10, 2007 8:10
Location: Hiding in a small, cramped corner of the BwB megarocket.
Contact:

Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by Multimania » Wed Mar 15, 2017 3:46

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!
Last edited by Multimania on Wed Mar 15, 2017 16:48, edited 1 time in total.

User avatar
lemm
Blorb
Posts: 682
Joined: Fri Jul 03, 2009 10:18
Location: canada lol

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by lemm » Wed Mar 15, 2017 12:38

:pogo

User avatar
Nisaba
Vorticon Elite
Posts: 819
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by Nisaba » Wed Mar 15, 2017 12:45

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.
"We have come to conquer you all and bring you lots of candy!" | about me | my current project: play Keen mods on a GameBoy |

User avatar
K1n9_Duk3
Vorticon Elite
Posts: 472
Joined: Mon Aug 25, 2008 9:30
Location: Germany
Contact:

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by K1n9_Duk3 » Wed Mar 15, 2017 21:52

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.
Hail to the K1n9, baby!
http://k1n9duk3.shikadi.net

gerstrong
Vorticon Elite
Posts: 1143
Joined: Wed Dec 31, 2008 14:44
Location: Frankfurt - Germany
Contact:

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by gerstrong » 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...
Having fun developing stuff...

User avatar
Multimania
Grunt
Posts: 20
Joined: Sat Nov 10, 2007 8:10
Location: Hiding in a small, cramped corner of the BwB megarocket.
Contact:

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by Multimania » Fri Mar 17, 2017 4:23

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!

NY00123
Vorticon Elite
Posts: 442
Joined: Sun Sep 06, 2009 19:36

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by NY00123 » Fri Mar 17, 2017 11:34

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).

User avatar
lemm
Blorb
Posts: 682
Joined: Fri Jul 03, 2009 10:18
Location: canada lol

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by lemm » Sat Mar 18, 2017 3:16


User avatar
Zilem
Vortininja
Posts: 178
Joined: Thu Jun 11, 2015 2:50
Location: Europe; Denmark
Contact:

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by Zilem » Sat Mar 18, 2017 16:53

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?
The Difference Between a Mod and Fan art?, a Fan art is a Concept and a Mod is that Concept put into life.

User avatar
DoomJedi
Vorticon Elite
Posts: 685
Joined: Mon Dec 14, 2009 11:22
Location: Israel

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by DoomJedi » Sat Mar 18, 2017 21:14

Runs and plays wonderfully, what a surprise....I love this community so much...

User avatar
Levellass
S-Triazine
Posts: 5261
Joined: Tue Sep 23, 2008 6:40

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by Levellass » Sun Mar 19, 2017 12:00

So wait... what do those vanilla patches do? How do I access whatever it is they're doing?
What you really need, not what you think you ought to want.

NY00123
Vorticon Elite
Posts: 442
Joined: Sun Sep 06, 2009 19:36

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by NY00123 » Sun Mar 19, 2017 22:32

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

NY00123
Vorticon Elite
Posts: 442
Joined: Sun Sep 06, 2009 19:36

Re: Omnispeak 1.0: A Keen:Galaxy reimplementation

Post by NY00123 » Sun Mar 26, 2017 20:05

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

Post Reply