Jump to content
IGNORED

The Core 2


Recommended Posts

Inspired by this topic, I started programming my own version of The Core, named... "The Core 2" (yes, I am not the most creative person here :)). The current version is roughly playable.

 

Improvements since V0.1:

  • increased the number of paddle positions from 16 to 24 and made the positions overlapping
  • to allow faster paddle movement, the driving controller code responsiveness got improved. Now fast controller turns are not ignored anymore, but move the paddle two steps into the previous direction. 
  • limited the paddle rotation to +/-2 relatively to the paddle position

 

As always, you have to tell Stella to use the Driving Controller!

 

The game starts to become interesting, but I am still not convinced yet. Probably I should create some kind of AI to allow easier play testing during development.

The Core 2 V0.2.png

The Core 2 V0.2.bin

The Core 2 V0.3.zip

Edited by Thomas Jentzsch
  • Like 15
Link to comment
Share on other sites

ZeroPage Homebrew is playing The Core 2 on tomorrow's ZPH stream LIVE on Twitch, hope you can join us!

 

Games:

(WATCH AT 1080P60 FOR BEST QUALITY)

 

  • Like 2
Link to comment
Share on other sites

Looking forward to your feedback. :) 

 

Meanwhile I have updated to version 0.3 (see 1st post). Changes:

  • Rewrote all kernels to offset the ball by 1 pixel. This allowed reducing the ball width from 2 to 1 while keeping the collision detection intact.
  • Increased the ball speed by 25% (I could add another ~30%)
  • Added ball bounce at the borders.
  • The paddles rotate back to their default when you release the fire button. IMO this eases the paddle handling.
  • Added simple computer AI (set left and right difficulty switches to A for outer and inner player), mainly to make testing easier.
  • Added some basic SFX.
  • Changed one outer border color (from grey to purple), results into a nice color sequence from blue to red.
  • Outer colors and inner hits do not cycle back to their initial values.
  • Added PAL-60 version

I find that the inner player has a major advantage over the outer player. E.g. each bounce from the inner player goes to the outer border, the outer player has to correctly target his paddle. To compensate this, the original game had the 20 outer border sections vs. an unknown(?) number of inner hits (here 7). I don't think this is sufficient.

 

I have a few ideas how to compensate this, however they all feel not 100% convincing to me.

  • Players switch sides after a while, this could be triggered e.g. by time or number of paddle bounces or border hits. The solution must avoid that the outer player can avoid taking risks until the next switch.
  • Different speed for ball which bounces from outer (faster) and inner (slower) paddle. However for the former, the ball can also target the own border, so this is not always an advantage.
  • Player 1 defends left outer border plus right inner border, vice versa for Player 2. Paddle control would swap when the ball crosses from left to right half. This is probably a bit too complex for the players to handle.
  • Another, unrelated idea is to give the players limited control over the ball direction after it hit their paddles.
  • ...any more ideas welcome!
Edited by Thomas Jentzsch
  • Like 4
Link to comment
Share on other sites

On the other thread, someone suggested toggling the color of the core when hit, with the core controlling the fill color when the ball hits an outer section.

 

You responded that that would be unbalanced. But what if the players swapped inside <-> outside when the core is hit, so that the inner player is always the same color as the core? That would at least be balanced, though it's not totally clear what circumferential positions to give the players when swapping radial positions.

 

Link to comment
Share on other sites

13 minutes ago, Pat Brady said:

On the other thread, someone suggested toggling the color of the core when hit, with the core controlling the fill color when the ball hits an outer section.

 

You responded that that would be unbalanced. But what if the players swapped inside <-> outside when the core is hit, so that the inner player is always the same color as the core? That would at least be balanced, though it's not totally clear what circumferential positions to give the players when swapping radial positions.

Yes, that's one idea I posted above. I think when switching sides, there will should be a short transition phase (e.g. alert before the swap, ball stops for a second), so that both players can adapt to the changed situation. Regarding the positions, I think they can be transferred 1:1 during the switch. E.g. when the outer player's paddle is at 2 o'clock before the switch, his inner paddle will be at 2 o'clock after the switch too.

 

BTW: The core has to have the color of the (current) inner player. So I cannot just switch the core color independently. 

Edited by Thomas Jentzsch
Link to comment
Share on other sites

@ZeroPage Homebrew Thanks a lot for presenting and trying out the game. There was some good feedback which I have to think about. Not sure though, if I want to turn the game into something completely different (Breakout), since that wouldn't do justice to the history of the game. But e.g. catching the ball seems like a good idea, maybe only for the outer player to balance things. And "paddle acceleration" is also something to think about. It would be great if the driving controller would allow more granular, precise positioning, closer to a real paddle. 

 

A few more things:

  • In the original, the round was over if one outer segment was hit three times. So that makes it really unbalanced.
  • I found resetting the paddle angle after releasing fire easier to play than keeping it. Maybe you can give the older version (where the paddles keep their angle) a try and let me know what is better.
  • You can actually reposition and display the ball twice per scanline (that's different to players and missiles). If you use debug colors and disable the playfield, you can even see this in my game. However that trick was not used here and in the original: "The large circle is drawn with the playfield, plus smoothed with the ball sprite and one of the missile sprites...". And I doubt it would be feasible to use the ball for both sides.
    1232332546_TheCore2V0.3Debug.thumb.png.cbf8a22bd5c0e13cea86c8047bacb30c.png
  • @alex_79 and I are still not convinced the original screenshot is real. The problem are the overlapping, non playfield pixels at the top and bottom of the core. There you need the ball and the missile at the outer and the inner circle at the same line. AFAIK this is not possible, at least I have no idea how to do it (without flickering).

My next planned step is to add a score (rounds won) display. But unlike the original, I want to have it besides the outer circle. It's a bit tricky, but it will allow for a taller circle. I want this, because in Stella and on my hardware setup, the outer circle is ~15% wider than tall. However in your stream it is not. Does your setup scale differently than original hardware?

Edited by Thomas Jentzsch
  • Thanks 1
Link to comment
Share on other sites

2 hours ago, Thomas Jentzsch said:

...

  • You can actually reposition and display the ball twice per scanline (that's different to players and missiles). If you use debug colors and disable the playfield, you can even see this in my game. However that trick was not used here and in the original: "The large circle is drawn with the playfield, plus smoothed with the ball sprite and one of the missile sprites...". And I doubt it would be feasible to use the ball for both sides.

...

Repositioning and displaying the ball multiple times per scanline can only be done with coarse (machine/CPU cycle) positioning, right? That would limit the possible graphics smoothening the ball object can do.

Link to comment
Share on other sites

6 hours ago, Thomas Jentzsch said:

I want this, because in Stella and on my hardware setup, the outer circle is ~15% wider than tall. However in your stream it is not. Does your setup scale differently than original hardware?

It doesn't look stretched for me in Stella, 6502.ts or Gopher2600. Unable to test on real hardware right now.

 

Stella:

1877196245_TheCore2V0.3.thumb.png.cf465cd8b15a3bf928fd1ade974bdebd.png

 

6502.ts

The_Core2_6502_ts.thumb.png.62c9d535a672ca57c555b768dd8e4558.png

 

Gopher2600:

1676299961_crt_TheCore2V0.3_20230114_165914.thumb.jpg.0fb84987d805d109c040adf3764effc3.jpg

 

 

Link to comment
Share on other sites

1 hour ago, Dionoid said:

Repositioning and displaying the ball multiple times per scanline can only be done with coarse (machine/CPU cycle) positioning, right? That would limit the possible graphics smoothening the ball object can do.

Correct.

  • Thanks 1
Link to comment
Share on other sites

On 1/13/2023 at 4:13 AM, Thomas Jentzsch said:

Different speed for ball which bounces from outer (faster) and inner (slower) paddle. However for the former, the ball can also target the own border, so this is not always an advantage.

For this, what about adding gravity to it à la Spacewar, or the comets / astronauts in Mad Planets?  If the ball heads for the outer player's own wall on the opposite side, have it snap back on a parabola once it passes the core and head for it at increasing velocity as it gets closer to it.  There would need to be some sort of equivalent for the player defending the core to balance out the play, though.

 

Another option would be to colour-key the ball - i.e., when one player hits it, the ball changes colour to match their paddle, and the area they are defending remains impervious to the ball until either a) the other player hits it, b) a certain number of hits on either the wall or core take place, or c) a timer expires.

 

For b) and c), it might also be possible to incorporate different states into the ball depending on its colour - neutral, destroys nothing until a paddle touches it and changes its colour to match the paddle; overloaded, destroys everything in its path until touched; affinity, heads for either the core or the wall only, etc.

Link to comment
Share on other sites

9 hours ago, Thomas Jentzsch said:

But e.g. catching the ball seems like a good idea, maybe only for the outer player to balance things.

Are you sure that there needs to be further balancing for the inner vs outer players? Yes, the inner player has an inherent advantage, but playtesting on the stream seemed to show that the extra hits required for the outside more than made up for that.

Link to comment
Share on other sites

19 minutes ago, Karl G said:

Are you sure that there needs to be further balancing for the inner vs outer players? Yes, the inner player has an inherent advantage, but playtesting on the stream seemed to show that the extra hits required for the outside more than made up for that.

They did not play following the rules. And changing the rules require hitting all outer borders 3 times, which is pretty tedious and not fun at all.

Link to comment
Share on other sites

2 hours ago, x=usr(1536) said:

For this, what about adding gravity to it à la Spacewar, or the comets / astronauts in Mad Planets?  If the ball heads for the outer player's own wall on the opposite side, have it snap back on a parabola once it passes the core and head for it at increasing velocity as it gets closer to it.  There would need to be some sort of equivalent for the player defending the core to balance out the play, though.

Sounds interesting and complex. I had a similar idea which effectively makes the outer player always target the inner core. But that would probably make the game very static. Your idea might help here, not sure.

 

2 hours ago, x=usr(1536) said:

Another option would be to colour-key the ball - i.e., when one player hits it, the ball changes colour to match their paddle, and the area they are defending remains impervious to the ball until either a) the other player hits it, b) a certain number of hits on either the wall or core take place, or c) a timer expires.

That would reduce own hits. Good idea.

2 hours ago, x=usr(1536) said:

For b) and c), it might also be possible to incorporate different states into the ball depending on its colour - neutral, destroys nothing until a paddle touches it and changes its colour to match the paddle; overloaded, destroys everything in its path until touched; affinity, heads for either the core or the wall only, etc.

All good ideas. I will try to sort them out. Thanks.

  • Like 1
Link to comment
Share on other sites

On 1/14/2023 at 10:54 AM, Thomas Jentzsch said:

...because in Stella and on my hardware setup, the outer circle is ~15% wider than tall. However in your stream it is not. Does your setup scale differently than original hardware?

Actually on my hardware setup, it is very close to a perfect circle:

IMG_7059.thumb.JPG.39e56979f834d47af67ef4027094e38b.JPG

 

image.thumb.png.fbbcee856cfc8e455bfd05cbf629b1fc.png

  • Like 4
  • Thanks 1
Link to comment
Share on other sites

  • 2 weeks later...

For no particular reason other than to see what happened, I recorded an hour of Core 2 (v0.3) just idling.  Couple of things to note:

  • The driving controller isn't even connected, so no interference from bumps, vibration, etc.
  • The ball ends up in places (e.g., behind the wall player) that it becomes trapped in, but eventually manages to break free
  • Video is 1h in length, but the final pattern that the ball gets trapped in starts at 23m30s
  • Disregard the weird colours; my upscaler has apparently decided that luma and chroma are only suggestions
    • The same goes for audio

The point of doing this was to see how the ball behaved with no external input affecting it.  There are a couple of interesting things that crop up, but the last 36-and-a-half minutes are the same pattern repeated over and over.  I figured that that was probably a good place to cut it since the likelihood of seeing changes at that point were probably pretty slim and way too far off in the future ;-)

 

 

  • Like 2
  • Haha 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...