Thomas Jentzsch Posted January 10, 2023 Share Posted January 10, 2023 (edited) 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.bin The Core 2 V0.3.zip Edited January 13, 2023 by Thomas Jentzsch 15 Quote Link to comment Share on other sites More sharing options...
Prizrak Posted January 10, 2023 Share Posted January 10, 2023 Cool @Thomas Jentzsch, l forward to seeing your spin on it. 1 Quote Link to comment Share on other sites More sharing options...
+ZeroPage Homebrew Posted January 12, 2023 Share Posted January 12, 2023 ZeroPage Homebrew is playing The Core 2 on tomorrow's ZPH stream LIVE on Twitch, hope you can join us! Fri Jan 13, 2023 | LIVE @ 6PM PT | 9PM ET | 2AM GMT+1Day WATCH LIVE: https://www.twitch.tv/zeropagehomebrew/WATCH LATER: https://youtube.com/zeropagehomebrew/ Games: Lucky Chase (2023 Exclusive World WIP Premiere | 2600) by Carlos Centeno @RaymanC The Core 2 (2023 WIP Port | 2600) by Thomas Jentzsch @Thomas Jentzsch Fox Hunt Arena (2022 WIP | 2600) by Michael Scott Bachman WATA Invaders (2023 WIP | 2600) by Ric Pryor @KaeruYojimbo (WATCH AT 1080P60 FOR BEST QUALITY) 2 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 13, 2023 Author Share Posted January 13, 2023 (edited) 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 January 13, 2023 by Thomas Jentzsch 4 Quote Link to comment Share on other sites More sharing options...
+Pat Brady Posted January 13, 2023 Share Posted January 13, 2023 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. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 13, 2023 Author Share Posted January 13, 2023 (edited) 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 January 13, 2023 by Thomas Jentzsch Quote Link to comment Share on other sites More sharing options...
Bomberman94 Posted January 14, 2023 Share Posted January 14, 2023 😅Thomas is "to blame" that I now have to get a driving controller. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 14, 2023 Author Share Posted January 14, 2023 (edited) @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. @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 January 14, 2023 by Thomas Jentzsch 1 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 14, 2023 Author Share Posted January 14, 2023 1 hour ago, Bomberman94 said: 😅Thomas is "to blame" that I now have to get a driving controller. Don't hold your breath, please. It is still very unclear where this goes. Quote Link to comment Share on other sites More sharing options...
Bomberman94 Posted January 14, 2023 Share Posted January 14, 2023 14 minutes ago, Thomas Jentzsch said: Don't hold your breath, please. It is still very unclear where this goes. Sure - but it made me realize that there are other driving controller adapted games out there. Now my interest is piqued☺️ Quote Link to comment Share on other sites More sharing options...
Dionoid Posted January 14, 2023 Share Posted January 14, 2023 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. Quote Link to comment Share on other sites More sharing options...
alex_79 Posted January 14, 2023 Share Posted January 14, 2023 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: 6502.ts Gopher2600: Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 14, 2023 Author Share Posted January 14, 2023 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. 1 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 14, 2023 Author Share Posted January 14, 2023 20 minutes ago, alex_79 said: It doesn't look stretched for me in Stella, 6502.ts or Gopher2600. Unable to test on real hardware right now. In your Stella screenshot it is. Turn your head by 90° to compare. Quote Link to comment Share on other sites More sharing options...
alex_79 Posted January 14, 2023 Share Posted January 14, 2023 You're right. Anyway it's much less noticeable than on your screenshot in the first post. It seems to be about 6.6% larger than it is tall. (4.6% on Gopher, and it's almost an exact circle on 6502.ts) Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 14, 2023 Author Share Posted January 14, 2023 (edited) I will try to find a compromise (~5-10%) and not to overcompensate. Some more real hardware results would be helpful too. Edited January 14, 2023 by Thomas Jentzsch Quote Link to comment Share on other sites More sharing options...
+x=usr(1536) Posted January 14, 2023 Share Posted January 14, 2023 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. Quote Link to comment Share on other sites More sharing options...
+Karl G Posted January 14, 2023 Share Posted January 14, 2023 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. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 14, 2023 Author Share Posted January 14, 2023 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. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 14, 2023 Author Share Posted January 14, 2023 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. 1 Quote Link to comment Share on other sites More sharing options...
Dionoid Posted January 15, 2023 Share Posted January 15, 2023 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: 4 1 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted January 15, 2023 Author Share Posted January 15, 2023 (edited) Thanks! Looks like only ~6 pixels (3 lines of the 2LK) are missing vertically here. Edited January 15, 2023 by Thomas Jentzsch 3 Quote Link to comment Share on other sites More sharing options...
+ZeroPage Homebrew Posted January 16, 2023 Share Posted January 16, 2023 Here's my circle picture from the broadcast, it's pretty close to perfect! - James 1 1 Quote Link to comment Share on other sites More sharing options...
+x=usr(1536) Posted January 26, 2023 Share Posted January 26, 2023 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 2 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.