ReflectionHLE (Reflection Keen)

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.
NY00123
Vorticon Elite
Posts: 508
Joined: Sun Sep 06, 2009 19:36

Post by NY00123 »

Thanks for showing interesting in these games! One thing that may be less-obvious is that Apogee never owned the Build engine used for Duke Nukem 3D and others. Ken Silverman worked on the engine while having full ownership. In general (also applying to the Keens), knowing a lot of information (and tricks) about the hardware in use was a key point. Few examples coming to mind: The EGA panning register and start address register.

Let's get back to my preceding post, though. Anybody who has any opinion on at least one of the suggested application icons from DoomJedi?
NY00123 wrote:<oldimglink> http://i60.tinypic.com/2sb4do3.png </oldimglink>
Last edited by NY00123 on Fri Oct 14, 2022 14:17, edited 1 time in total.
GoldenRishi
Vortininja
Posts: 229
Joined: Mon Nov 05, 2007 3:20

Post by GoldenRishi »

NY00123 wrote:Thanks for showing interesting in these games! One thing that may be less-obvious is that Apogee never owned the Build engine used for Duke Nukem 3D and others. Ken Silverman worked on the engine while having full ownership. In general (also applying to the Keens), knowing a lot of information (and tricks) about the hardware in use was a key point. Few examples coming to mind: The EGA panning register and start address register.
Interesting, I thought Apogee owned it. And yeah, definitely, a firm understanding of hardware was really important to implement their software.
NY00123 wrote: Let's get back to my preceding post, though. Anybody who has any opinion on at least one of the suggested application icons from DoomJedi?
NY00123 wrote:Image
I like the second one the best.
(Used to be LordofGlobox)
gerstrong
Vorticon Elite
Posts: 1244
Joined: Wed Dec 31, 2008 14:44
Location: Frankfurt - Germany
Contact:

Post by gerstrong »

NY00123 wrote:
Let's get back to my preceding post, though. Anybody who has any opinion on at least one of the suggested application icons from DoomJedi?
NY00123 wrote:Image
I'm not a designer but I don't get the message here. I see the mirrors but the reflection is not that clear. Why not show a reflected ray with Keen coming out from the ray. Make a side view of the mirror so you can only see how it reflects the ray. Show less of the mirror.

I think your icons are too busy...
Having fun developing stuff...
NY00123
Vorticon Elite
Posts: 508
Joined: Sun Sep 06, 2009 19:36

Post by NY00123 »

Thanks for the comments about the icons!

I should probably begin by telling there is another, *non-final*, sketch of DoomJedi, after having a little discussion with him (see the letters on the bottom of each icon, except for the leftmost one):

<oldimglink> http://oi67.tinypic.com/24bokmw.jpg </oldimglink>

As usual, please give your feedback! Before explaining what has leaded to the icons above, though, I should get to replying to a few responses to mine.
GoldenRishi wrote:I like the second one the best.
Thanks for your comment! It's not the first time I hear the second icon (out of the 5-icons set I've previously shown) is preferred over the others. Admittedly, I think this can be a problem if I want to have some identification of each game somewhere (e.g., a bit of text on the bottom), but feedback like yours does help.
gerstrong wrote:I'm not a designer but I don't get the message here. I see the mirrors but the reflection is not that clear. Why not show a reflected ray with Keen coming out from the ray. Make a side view of the mirror so you can only see how it reflects the ray. Show less of the mirror.

I think your icons are too busy...
Thanks for your feedback! Well, I guess that I think about the view in each mirror as a reflection of the other. Given that Reflection Keen supports the 3D Catacomb titles in addition to Keen Dreams, I prefer to have a game-neutral icon.

While the idea of having a different icon for each game was mentioned by someone else (not in these forums), and I agree that having the exact same icon for multiple executables can be confusing, I still want to have a single identity.

This is a good chance to mention the following update. As of the last proper release, each game version has its own EXE. However, I've done some work that includes partial EXE unifications. The goal is having a single EXE per game, for all supported versions. There are currently separate EGA and CGA EXEs for Keen Dreams, but this is otherwise accomplished.

For this reason, it makes sense to have a bit different icon for each game, which is actually one shared icon with a bit different identification. I've thought of using sequences of letters, like game-specific file extension ("KDR" for Keen Dreams) or just some pair of letters.

Again, any further feedback can be useful!
Last edited by NY00123 on Fri Oct 14, 2022 14:16, edited 1 time in total.
User avatar
DoomJedi
Vorticon Elite
Posts: 888
Joined: Mon Dec 14, 2009 11:22
Location: Israel

Post by DoomJedi »

Obviously the 3 letters on the icon are just placeholders for game-appropriate letters.
NY00123
Vorticon Elite
Posts: 508
Joined: Sun Sep 06, 2009 19:36

Post by NY00123 »

DoomJedi wrote:Obviously the 3 letters on the icon are just placeholders for game-appropriate letters.
Oh yeah, you're absolutely right about this.

Now, I really haven't thought I'd bother you with this so much... but it's great to see you coming up with the following, after I've referred to the few replies around here:

<oldimglink> http://oi64.tinypic.com/2w2j51d.jpg </oldimglink>

It is still the case I want the final icon to be "game neutral" i.e., not Keen nor Catacombs specific in any way.

As usual, opinions/preferences are welcome.
Last edited by NY00123 on Fri Oct 14, 2022 14:18, edited 1 time in total.
NY00123
Vorticon Elite
Posts: 508
Joined: Sun Sep 06, 2009 19:36

Post by NY00123 »

All right, it has taken a "bit" of a long time, but here we are with a new release. As previously said, no new game is supported, but at least internally - and not just internally - it's clear there are changes.

While not directly related, it's also the first time installers are uploaded for Reflection Keen, including not just Windows EXEs, but also Linux binaries. There are still ways to manually extract the contents if you wish, though.

Summary (of somewhat clearer changes):
- A new launcher is now in. It is SDL2-based so the menus can be drawn in the same way across multiple platforms. It is true the graphics may be a bit simplistic, but at least we have this. As a side-note, a CGA font is used for the texts.
- There is one EXE per game now, possibly supporting multiple versions (2 or 4) in the same EXE.
- Due to this, and for other reasons, different directories are used for writing new files (like CONFIG.KDR). There are command line arguments that can be used to change these (up to some level), though. The README should have the details.
- Reflection Keen can (at least usually) detect and use the data from the GOG.com installation of the Catacombs (assuming setup_catacombs_pack_2.1.0.5.exe was used). For all games, it can still look for data in the so-called "current working directory" (i.e., where the game EXE is technically run from). You may also select custom installation directories from the launcher itself (for compatible and supported game data only).
- Improvements were made to "modern" game controller support. The ability to select actions from the newly added launcher is a clear example. A smaller example is the fact a controller button can be used to display an on-screen keyboard for using debug keys (e.g., cheat codes).
- As a consequence, this scheme is enabled by default. Please see the README file if a controller can not be recognized.

A few "minor" problems:
- There's a new launcherexeargs setting that can be use to specify command line arguments for the game, *if* the graphical launcher is used. There's currently no way to set it from the launcher itself.
- If a Linux installer is used, there are chances not all shortcuts/icons will appear as expected. Here, I can see exactly half of the icons (the non-software ones), using Ubuntu 14.04 with the Unity shell.
- The "Software" name for some of the shortcuts may be misleading. It refers to the *launcher window*, not necessarily the game itself. Problem is the descriptions of a few shortcuts may already be too long, so I better don't write e.g., "Software launcher".

I think that I won't show the whole changelog this time. It can be found in the README. See the first post for a download (or GitHub link) so you can check the README out.

A couple of launcher screenshots follow, but since these don't include any application icon, this is the final choices as used for Keen Dreams. Thanks again to DoomJedi for his work!

Application icon for Keen Dreams:

Image

Launcher screenshots:

Image

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

Post by NY00123 »

UPDATE - Bug report (Nov 21 2015): For anybody using a Linux installer, there are good chances you won't be able to use a game controller in a fullscreen window (either the launcher, or in-game). This looks like a problem in the way I manually built the SDL2 library bundled with the installer (version 2.0.3). As a workaround, you may attempt to rename or remove the libSDL2-2.0.so.0 library as found in the Reflection Keen installation directory (under i386 or x86_64 subdir), so a different installation of SDL2 can be used (although the game won't run if there's none which is installed).

Original post contents (after a few edits):

One tip I should add here (and probably also to the README, albeit it's not officially supported):

If you have a game controller fully configured for Steam's Big Picture Mode, you may use the controller for Reflection Keen's launcher and the games (in the "modern" scheme) as follows:

Simply add any Reflection Keen port of choice to Steam as a non-Steam game. Once it's launched from the Steam client, it should make the controller usable. Note that you do not *have* to run Steam in Big Picture Mode; Only the initial controller configuration (which may have already been done) probably requires this.

While it may technically be possible to let Reflection Keen do the same even without using Steam (by reading the contents of some config.vdf file), it's probably safer to avoid this (e.g., since it can theoretically break out of a sudden, just by uninstalling Steam).

Also note to anybody who got the new official Windows/Linux port of Keen Dreams (as available from Steam, and possibly also IndieGameStand):

While this port also has support for game controllers which differs from the DOS versions, it was basically developed *independently* of Reflection Keen, so differences in behaviors and usage are expected. Also, Reflection Keen aims to reproduce the behaviors of original DOS versions, not any other release, even if official.
User avatar
BSzili
Meep
Posts: 2
Joined: Tue Sep 13, 2016 20:03

Post by BSzili »

Thanks to NY00123 efforts to make the source code portable, Keen Dreams has made its way to the Amiga too :)

https://www.youtube.com/watch?v=U8DspGdydsI
User avatar
Nisaba
Janitress
Posts: 1597
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Post by Nisaba »

BSzili wrote:Thanks to NY00123 efforts to make the source code portable, Keen Dreams has made its way to the Amiga too :)

https://www.youtube.com/watch?v=U8DspGdydsI
Inspector Clouseau!
out now (link) : Image
NY00123
Vorticon Elite
Posts: 508
Joined: Sun Sep 06, 2009 19:36

Post by NY00123 »

BSzili wrote:Thanks to NY00123 efforts to make the source code portable, Keen Dreams has made its way to the Amiga too :)

https://www.youtube.com/watch?v=U8DspGdydsI
It is a bit unusual to see that Amiga ports are the first real fork of refkeen that I'm aware of :)

I already knew about your work on the Amiga port of refcatabyss back on 2015. Must have been some work, although you should already have the experience. Nice to see that the Amiga can handle the made-for-EGA planar graphics with (relatively) little difficulties.

Technical note: Once thing I wanted to ensure long ago, is that none of the original games' sources, even after porting, will have direct mentions of any SDL2 definition (e.g., function). This is done in order to emphasize that refkeen does not *have* to be an SDL2 port, although I don't plan to change this any time soon.

Furthermore, originally I added new be_sdl* sources, later renamed be_st(_sdl)*. The renaming was done, again in order to emphasize that an alternative to SDL2 can be used if one desires.

It looks like you really took advantage of this separation for the Amiga. Hopefully I didn't cause too much mess for you, with stuff like the "alternative controller scheme" and the launcher, although the latter is easy to omit.
Keening_Product
Kuliwho?
Posts: 2167
Joined: Fri Jan 20, 2012 7:02
Location: Tied up in the Oracle Chamber's basement
Contact:

Post by Keening_Product »

BSzili wrote:Thanks to NY00123 efforts to make the source code portable, Keen Dreams has made its way to the Amiga too :)

https://www.youtube.com/watch?v=U8DspGdydsI
This is very neat. Nice work everyone. Also, welcome to the PCKF BSzili.
Keening_Product was defeated before the game.

"Wise words. One day I may even understand what they mean." - Levellass
NY00123
Vorticon Elite
Posts: 508
Joined: Sun Sep 06, 2009 19:36

Post by NY00123 »

Hey there,

This has been postponed for months yet again, but we have another release for this night!

I should first mention that, if you have a problem with getting a Catacomb Abyss game to run, it's because the file HELP.TXT from the original game data is now required. It wasn't the case in the preceding release, which was a mistake.

The change log should have a list of various changes (although the git log shall tell more). One of these is the addition of sound resampling support for OPL emulation, in case an output rate differing from 49716Hz is used. Currently the SpeexDSP library is used for resampling.

I think the most significant update, though, is the addition of support for Android-powered devices. This includes multi-touch display input (tested on Android only). An on-screen keyboard can be used for text input or some other purpose.

It's also possible to use a made-for-PC keyboard, if supported by the device (via e.g., Bluetooth or USB-OTG). Using a game controller is theoretically possible, although it can be a bit difficult to set up, and there are chances not all controllers will be supported any way. The README file should have some more details, at least for controllers that can be used.

Here are a couple of screenshots from Android (originally captured as 1280x720, shrunken to 640x360):

Image
Image

Side-note: Do you know, at least in the case of Keen Dreams, that this is the third Android port? (Or at least the third that I'm aware of.)

That's right, there are already two more:
- The original official Android port, developed by Super Fighter Team for Flat Rock Software: https://play.google.com/store/apps/deta ... keendreams
- Commander Genius (using Reflection Keen Dreams as a base for Keen Dreams support): https://play.google.com/store/apps/deta ... nekeenplus

I think that I won't mention the change log here this time. It can be found in the README file, accessible from the GitHub repository (and also from the Reflection Keen installers).

A few known issues:
- Great sound latency on Android: Unfortunately I think there isn't a lot that can be done here.
- Some missing tones on Android (mostly low-frequency): This is probably an inherent limitation of the internal speaker(s), if used. A set of external headphones or speakers may resolve this problem.
- Configuring a game controller for usage (with the modern controller scheme) may be a bit difficult, especially on Android.
- SDL2 events of types SDL_RENDER_TARGETS_RESET and SDL_RENDER_DEVICE_RESET are currently not handled at all. A possibly-related side-effect has been observed with a Windows executable, being that bilinear interpolation ceases to work as expected after resizing the window.
- While SDL2 events of type SDL_APP_TERMINATING and SDL_APP_LOWMEMORY are handled on Android (with the latter simply leading to an immediate shutdown), this hasn't been well-tested.
- If you're using any of the Linux installers, and then running one of the games under a Wayland session, then there are good chances that it won't run as a native Wayland app. Reason is that a libSDL2 library is bundled, originally built to work under Ubuntu 12.04, so it wasn't possible to add Wayland support (at least not easily). You can use a replacement libSDL2 library with native Wayland support if you wish. It has to be from version 2.0.2 or later, while 2.0.4+ is recommended (due to mouse-related fixes).
- The command-line argument of -cfgdir doesn't work as expected.
User avatar
BSzili
Meep
Posts: 2
Joined: Tue Sep 13, 2016 20:03

Post by BSzili »

NY00123 wrote:
BSzili wrote:Thanks to NY00123 efforts to make the source code portable, Keen Dreams has made its way to the Amiga too :)

https://www.youtube.com/watch?v=U8DspGdydsI
It is a bit unusual to see that Amiga ports are the first real fork of refkeen that I'm aware of :)

I already knew about your work on the Amiga port of refcatabyss back on 2015. Must have been some work, although you should already have the experience. Nice to see that the Amiga can handle the made-for-EGA planar graphics with (relatively) little difficulties.

Technical note: Once thing I wanted to ensure long ago, is that none of the original games' sources, even after porting, will have direct mentions of any SDL2 definition (e.g., function). This is done in order to emphasize that refkeen does not *have* to be an SDL2 port, although I don't plan to change this any time soon.

Furthermore, originally I added new be_sdl* sources, later renamed be_st(_sdl)*. The renaming was done, again in order to emphasize that an alternative to SDL2 can be used if one desires.

It looks like you really took advantage of this separation for the Amiga. Hopefully I didn't cause too much mess for you, with stuff like the "alternative controller scheme" and the launcher, although the latter is easy to omit.
Having a clean base was a great help, and even things like the alt controller support proved useful later for the CD32 port.
Planar graphics were a nice match for the Amiga hardware, in fact I'm still using the emulated EGA memory layout. For Keen Dreams I will have to ditch it later, if I want to make a "serious" port. The current CPU-based blitting I cobbled together is not very good. Using the h/w Blitter is a must if I want to support slower OCS machines.
NY00123
Vorticon Elite
Posts: 508
Joined: Sun Sep 06, 2009 19:36

Re: Reflection Keen (ports of Keen Dreams and all 3D Catacombs)

Post by NY00123 »

POST EDIT (Still Apr 01, going to be Apr 02 in less than 2min): For users of Keen Dreams from Steam on Windows, GAMETEXT.KDR has been updated to be in sync. with the fixed revision from Linux. Thus, Reflection Keen should support the data.

Since it is the you-know-what-day-it-is day, this may be a good opportunity for another update.

I should first tell this release has a possible regression, being lower-than-expected frame rates on Android (mostly noticeable in the Catacombs). The exact cause of this is currently unknown.

Also, if anybody has used a game controller with the classic controller scheme, you may have to re-calibrate the controller (due to technical changes).

As usual, the change log can be found in the README, while the git repository has a more thorough log.

See the first post for downloads (or GitHub link) so you can check the README out.

A shortened list of samples of updates:
- If you don't mind building working binaries from the sources, then it should now be possible to build application bundles for OS X / macOS. Thanks to rhoenie and Dominus for their assistance. Note that since I lack direct access to a Mac, this is not well-supported.
- It's now possible to use the data from Keen Dreams v1.00. Note that since KDREAMS.EXE from v1.00 was originally packed with PKLITE v1.05 (rather than LZEXE), a different unpacker was required. Interestingly, a new one has recently been written for OpenTESArena! For more details you can read here: https://github.com/afritz1/OpenTESArena/issues/51
- If you're using Linux (or OS X), there's further the addition of partial support for the 2015 re-release of Keen Dreams, as available from Steam and IndieGameStand. Unfortunately, currently this won't work with a Windows installation of the re-release, due to minor differences in GAMETEXT.KDR (see below for a few more details). Also, this support is essentially a bonus, and it's still recommended to use the data from a supported DOS version.

Notes about GAMETEXT.KDR from the 2015 re-release:
Originally, when the game was downloaded via the Steam client for Windows, the received GAMETEXT.KDR file would have a few minor textual bugs. These had been fixed, but the fixed file was present only after downloading with the Steam client for Linux (or Mac), not on Windows.

Eventually, though, this got fixed on Windows as well, following a report of mine.

A few technical details about the same file:
GAMETEXT.KDR with minor bugs: File size of 4312 bytes, CRC32 of 9394369a.
GAMETEXT.KDR with fixes: File size of 4314 bytes, CRC32 of 0996e7f2.
Post Reply