[Release] BoulderCaves+, a Krissz Engine compatible remake

Everything about the modern clones and remakes.

Moderator: Admin

User avatar
SheepsTooth
Member
Posts: 6
Joined: Fri Sep 04, 2020 6:20 pm

Post by SheepsTooth »

Hello Agetian,

I just wanted to thank you for the work you have put into this project - it is much appreciated.

I don't get to play nearly as much as I'd like to these days but when I do I shall use your version of the remake.

Enjoy the holidays!
Agetian
Member
Posts: 78
Joined: Sun Sep 19, 2021 10:14 am

Post by Agetian »

SheepsTooth wrote:Hello Agetian,
I just wanted to thank you for the work you have put into this project - it is much appreciated.
I don't get to play nearly as much as I'd like to these days but when I do I shall use your version of the remake.
Enjoy the holidays!
Thank you so much for the kind words! :) Happy to hear that you enjoy my project so far! Good luck to you and happy holidays to you as well!

- Agetian
User avatar
Chris Neilson
Member
Posts: 33
Joined: Wed Aug 29, 2007 2:53 am

Post by Chris Neilson »

There error at editor
PLAYTESTING: saving temporary cave file...
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Chris\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:\Users\Chris\Desktop\Chris Neilson\Python\Boulder Cave\Source\bouldercaves\editor.py", line 934, in playtest
if self.save(gamefile):
File "C:\Users\Chris\Desktop\Chris Neilson\Python\Boulder Cave\Source\bouldercaves\editor.py", line 899, in save
mapline += BDCFFSYMBOL[obj, direction]
KeyError: (<GameObject EMPTY (#0) at 0x190044c8430>, <Direction.RIGHT: 'r'>)
firefly or butterfly direction at editor. whlie playtest or save.

Image

Here map code is

Code: Select all

[map]
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WP.....................................W
W......................................W
W......................................W
W........ .............................W
W........ .............................W
W........ .............................W
W........ ............ ................W
W........o............ ................W
W........ ............ ................W
W..    Q   O      ....b................W
W........ ............ ................W
W........q......    C   B        ......W
W........ ............ ................W
W........ ............c................W
W........ ............ ................W
W........ ............ ................W
W........ ............ ................W
W..................... ................W
W......................................W
W.....................................XW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
[/map]
if there firefly and butterfly direction
Firefly direction: o-up O-right Q-left q-down
butterfly direction: b-up B-right C-left c-down
if space or dirt or etc. is not direction.
Boulder Dash Construction Kit
Crazy Light Construction Kit
GDash <> XDC-engine
Agetian
Member
Posts: 78
Joined: Sun Sep 19, 2021 10:14 am

Post by Agetian »

Hi Chris, thanks for the report!
It was a little tricky to reproduce, but I think I figured out what the problem was. I released an update which will hopefully fix this :) If it still persists, let me know and I'll look around some more.

UPDATE (12/26/21): Version 1.1.2 has been released. It's a minor bugfix release addressing the following issue:

* Editor: fix a bug with the direction improperly assigned to objects that can't have a direction in certain cases when RMB-erasing objects.

- Agetian
User avatar
Chris Neilson
Member
Posts: 33
Joined: Wed Aug 29, 2007 2:53 am

Post by Chris Neilson »

Hey. there problem with width or height cave with open border.
ValueError: invalid playfield/cave width or height (2-100)
I change the code game.py at line 425

Code: Select all

if width < 2 or width > 100 + self.mirrored_border_size or height < 2 or height > 100 + self.mirrored_border_size:
to

Code: Select all

if width < 2 or width > 100 + 100 or height < 2 or height > 100 + 100:
I playtest the cave went through.
Image

A min/max is 2 - 100 + open border (100).
Boulder Dash Construction Kit
Crazy Light Construction Kit
GDash <> XDC-engine
Agetian
Member
Posts: 78
Joined: Sun Sep 19, 2021 10:14 am

Post by Agetian »

Thanks for the report, Chris! Fixed :)

UPDATE (12/27/21): Version 1.1.3 is released. It's a bugfix release that addresses the following issues:

* Fixed a bug that caused the maximum allowed open border size to be less than what's needed for a map with width/height above 90.
* Converted the slow per-object checks in the editor and cave decoder to faster per-ID checks (only noticeable in the editor on slower legacy hardware).

- Agetian
zsom
Member
Posts: 84
Joined: Sat Apr 10, 2010 5:46 am

Post by zsom »

Hi.
I noticed a little inconsistency with the original BD,
the intermission caves are movable here, they move.
In the original BD, the intermission caves stood still.

The cool thing about BC +, as well as Gdash, is the Rockford animation pushing the boulder through.

This is the idea for future releases:
Could Rockford's animations be extended to what they are in "Boulder dashes" by Honz Liepa.

Such a small thing, and it makes me happy.

greetings
Agetian
Member
Posts: 78
Joined: Sun Sep 19, 2021 10:14 am

Post by Agetian »

zsom wrote:Hi.
I noticed a little inconsistency with the original BD,
the intermission caves are movable here, they move.
In the original BD, the intermission caves stood still.
Hi! That's an interesting observation, can you give an example of this? Usually intermission caves are small and I guess they shouldn't scroll anyway, but maybe there's a special case of some sort that I'm missing. At any rate, this should be relatively straightforward to implement, I just need to know what kind of an effect would be desirable exactly, and possibly an example cave where this would manifest itself and could be tested.
zsom wrote: This is the idea for future releases:
Could Rockford's animations be extended to what they are in "Boulder dashes" by Honz Liepa. Such a small thing, and it makes me happy.
I think it should be possible, but I'm not familiar with "Boulder Dashes", I'd need to look into it to determine what differences are meant :)

- Agetian
zsom
Member
Posts: 84
Joined: Sat Apr 10, 2010 5:46 am

Post by zsom »

Hi
The intermission caves in BD do not have to be small at all.
Only its upper left corner is visible.
That is why they are stationary.

In BC + it occurs in the built-in game "Boulder dash I".
zsom
Member
Posts: 84
Joined: Sat Apr 10, 2010 5:46 am

Post by zsom »

"Boulder dashes" shows Rockford walking up and down.
Classic BD always shows positions like Rockford goes left or right.

This could be done optionally.
DarkStoorM
Member
Posts: 15
Joined: Tue Dec 14, 2021 10:52 pm

Post by DarkStoorM »

Agetian wrote:I just need to know what kind of an effect would be desirable exactly
I don't know what the actual cave size for intermission is set for C64, but I guess it's reasonable to scroll the cave if it's still just 40x22, but filled with titanium wall, the game will see that rendered area is still in an acceptable range (between 0 and 40 width, and 0-22 height).

I can think of two solutions:
- there is an Intermission flag in the cave file, I believe you could just disable scrolling if the current cave is an intermission
- set max cave size if the current cave is an intermission to maximum that is your rendered, visible area (or an actual 20x12 intermission)

With solution two, intermissions can still be smaller than 20x12, the rest of the cave can still be just filled with titanum wall anyway, but the game won't be able to scroll.

I'd personally just toggle the scrolling if the cave is an intermission.

I also don't see anything in GDash source regarding the scroll for intermissions, can't check things at the moment.

---

A bit of off-topic, yesterday I noticed that in GDash, whenever I just hold a movement button (even if Rockford is not moving), my CPU spikes from 2% usage to 25% :D now that's odd.
Agetian
Member
Posts: 78
Joined: Sun Sep 19, 2021 10:14 am

Post by Agetian »

Alright, I changed this upstream so that caves that are marked as "Intermission" no longer scroll. With this approach, they can be 20*11 or smaller (even not necessarily filled with titanium wall, just smaller sized) and they won't scroll, but caves bigger than that and marked as Intermission won't scroll either. Please check to see if this is the desired effect. At the very least, it makes BD1 intermissions not scroll in C64 mode. You'd need to download the current master source to test this behavior since it's not yet in an actual release.

I also spent some time today experimenting with the mysterious "lag spikes" that we're experiencing. It's really weird actually. I narrowed it down to the call to repaint() made from tick_loop() - no other call has quite the effect on "dt", which is the delta time between the current update and the previous one. I then started disabling parts of repaint() to determine what exactly did this, but interersingly, no single part seemed to be the culprit. Moreover, even disabling pretty much all of repaint(), leaving only the increase to the graphics counter in, doesn't solve it - it looks almost as if the very call to repaint was somehow "costly" and would take a random amount of time to complete, sometimes taking nearly 500 ms more than at other times. Disabling repaint() completely made the game update timer "calm down" and stop jumping up and down (there were some minor jumps, but within the 0.1 s range, as opposed to 0.2-0.5 s). Interestingly, the game logic update call doesn't seem to have this kind of an effect on things. So, I'm still stumped as to what's going on there :/

- Agetian
DarkStoorM
Member
Posts: 15
Joined: Tue Dec 14, 2021 10:52 pm

Post by DarkStoorM »

Hmmmm...

Perhaps the delta needs to be updated more frequently?
I can only guess that can be a clue. Updating the delta for cave scanning more frequently with some external timer (to not update the entire game), more than 60 times a sec can result in higher accuracy, let's say update the variable 240 times/s, having 4ms of time difference only for the cave scanner rather than 16ms. This is what I believe can be happening here. There should not be any impact on performance if you run a timer just to update the delta for cave scanner.

Let's say we are playing a cave that has speed of 8fps (125ms per scan)

One tick_loop is 16ms, because you are using floor division (1000 // 60)

So we keep looping every frame, incrementing the delta until it ends up being above 125ms:

16 -> 32 -> 48 -> 64 -> 80 -> 96 -> 112 -> 128 [we run a scan, and we are left with 3 milliseconds]

Next scan:

3+16 -> 19 -> 35 -> 51 -> 67 -> 83 -> 99 -> 115 -> 131 [another scan, and we are left with 6ms)

With each scan you will have to wait for a couple milliseconds more until it eventually gets to this point

12ms + 16 -> 28 -> 44 -> 60 -> 76 -> 92 -> 108 -> 124 -> 140 [new scan]

Heads-up, this is only how I think it works both in BC+ and GDash, haven't tested it out yet.
---

I the end, you could try to find a very close interpretation of JavaScript's setInterval function in Python, maybe that would give some high accuracy updates
Agetian
Member
Posts: 78
Joined: Sun Sep 19, 2021 10:14 am

Post by Agetian »

That's an interesting suggestion, DarkStoorM! I'll see if I can implement something like that and see if that would help things.

- Agetian
User avatar
Chris Neilson
Member
Posts: 33
Joined: Wed Aug 29, 2007 2:53 am

Post by Chris Neilson »

Image

Hey. Should put black background in popup window.

text got through on right window.
Image

Fix this popup window.
Boulder Dash Construction Kit
Crazy Light Construction Kit
GDash <> XDC-engine
Post Reply