New game: Hexxagon

I guess “Game Ideas” is not the best fit as it is a well known game, but I saw no better place to post this.

Here are the rules:

https://www.yucata.de/en/Rules/Hexxagon

Right now I only have a prototype but it is kinda interesting in itself as it shows how to make each blink known where they live in the world which creates some interesting possibilities. I will keep posting any updates here.

2 Likes

Ok, this is not a prototype anymore in the sense that I now have the full game working! There are probably issues to be ironed out in general but this is why I would love your help to do it. First, here are the known issues:

1 - The animations are not that great and can definitely be improved. For most things I just used color shades. Suggestions on anything related to this would be much appreciated.
2 - The end state does not do anything currently. I am thinking about simply setting all Blinks to the color of the winning player. Not sure what to do in the case of a draw. I guess I should forbid an even number of Blinks. :slight_smile:
3 - The actions are not very snappy as the game relies a lot on broadcast messages. There is an enabled debug feature that will actually show you the messages being sent and received. If you try any actions on a Blink while another one is waiting on a reply, you might put the game in a weird state. I am considering ways to address that.
4 - The game will support up to 4 players, but I was lazy and just hardcoded 2 players. :slight_smile:
5 - The game requires lots of blinks. The absolute minimum would be 15 blinks (but you can try the game mechanics with as few as 5 blinks, just do not expect an actual interesting game in this case). Anything over that would make the game a lot better and the actual limit is 256 blinks (I thought making it be 65535 blinks was too much, but it can easily be changed to do that. :slight_smile: ).

Instructions on how to play are linked in the OP. For the Blink specific mechanic, here is what to do:

1 - The game starts in its idle state. Click any Blik to swicth to the setup state.
2 - In the setup state, click any blink to set it to a player. Click it again to set it to the next player. Clicking again will set it as empty again and so on.
3 - You need to select at least one blink for player one and one for player 2 (1 red, one blue). The game will refuse to move to the next state if you do not.
4 - Double click any blink to move on the the play state.
5 - In the play state, the current player has to select one of its blinks (this is the origin blink). Blinks where you can make a move to will light up. Click one of those blinks to set the target. Double click to commit the move.
6 - As per rules, if your move was to an adjacent blink, you “duplicate” yourself (you take over the blink without leaving your current origin position). If it is not, your blink moves to that position.
7 - If after moving you end up next to blinks from the next player, all those blinks will become yours.
8 - If there are still empty spaces, game moves to next player.

At any point in the game, you can long press any blink to reset everything and go back to the idle state.

I would love to add some mechanics that are only possible due to using blinks (for instance, add some mechanic where you physically move pieces) so if you have any suggestions in that regard, let me know.

That is it. Please try it out and let me know what you think!

4 Likes

@BGA It seems to me like Hexxagon would be a very natural fit for the blinks platform, so I’m glad that you are taking the time to port it over to blinks! I feel like most of the games in the existing blinks library were designed with a smaller number of blinks in mind, and then scaled up to allow for larger numbers of blinks. I think it is cool that this game kind of uses the opposite approach in taking a game that plays best with a large number of blinks and finding ways to scale it down. In terms of feedback, I know that there are currently many of us here waiting to get our developer kits from the recent Kickstarter campaign, and many people that do have developer kits do not currently have the 15 blinks needed to fully test the game. If possible, it might be helpful if you could upload a bit of gameplay video or something to the forum so that we can get a feel for the game in its current state and offer ideas/suggestions. Best of luck in your development, and I look forward to seeing how the game progresses!

2 Likes

Thanks. This is exactly what I thought when I decided to port it.

FWIIW, this is a sound strategy. The smaller the number of blinks you need, the more people would be able to play with it. I guess I will have to count on people getting together withe their blinks to play it. :slight_smile:

Yep. Although right now it does not do anything to that effect. The main issue here is that the main game mechanic involves people moving their pieces from one place to another place up to 2 blinks away in any direction. For this to actually result in what can be called a game, an opposite player blink needs to have enough space to be positioned at least 4 pieces away (this is why you can actually test the game mechanics with 5 blinks, although calling it game is a stretch in this case).

I am actually in the same position. I only have a borrowed set of pre-release blinks (12 of them). Although I am crazy and ordered a grand total of 60 blinks (now 63 as I ordered the summer games). :slight_smile:

I can do that. Will try to do it this week although I also have the 12 blinks limitation currently.

Thanks for your feedback.

1 Like

@BGA Sounds good. I’m looking forward to the gameplay video!

I do think that as time goes by, and the blinks game library continues to grow the number of players that will have 15+ blinks will expand greatly. The latest Kickstarter and summer games pack is bringing my blinks collection to 27, so games like this one that are designed with a larger number of blinks in mind are certainly a welcome addition. Plus, like you said there is always the option of people bringing their sets together with friends to allow for larger games. I’ll definitely be giving this one a shot once I receive my dev blinks.

I put a little thought in to some “blinks only” game mechanics and something that I came up with was having a blink randomly spawn in the field as a split space. You could potentially give each blink a small (like 1 in 20), chance of spawning this way when the game transitions to play state. The first player to capture this space would have the option of splitting the game field into two pieces and recombining them in another orientation. This might be straying a bit from the original design of the game, but I think it could add some interesting dynamics of players deciding if they should make a push to get the split space, or expand tactically in a more traditional way. I know that your game currently utilizes some more complex datagram functionality and that pieces have the ability to make their locations in the world known. I don’t know if something like this would break that functionality, or potentially unbalance the gameplay. Maybe it would be an interesting opportunity for a mod or something down the road though.

2 Likes

I am trying to track down one issue with messages being lost (and the gameplay being stopped due to that) and will make the video after that (and after I can get a reasonable setup for recording Blinks).

Yep, we can only hope. Anyway, I am only doing this for fun so although people playing would be really nice, it is not my main objective. I want to learn blinks programming and have fun while doing that. :slight_smile:

This is exactly the kind of things I am looking for, so thanks! I will try it as soon as I track down the nasty bugs I still have (and find ways to decrease my storage usage. It is getting pretty tight by now).

Ah, but that IS the point. :slight_smile: I want to use the game mechanics as a base but anything that can make it more interesting or make better use of blinks is welcome. :slight_smile: Even if the end result is a completely different game.

This is correct but I am not using this to do anything too fancy. Right now it is only used for a blink to figure out if it is a possible target for a move and and forgotten afterwards. That reminds me I want to write an example of using this functionally. Will get around to it eventually.

Thanks again for your feedback.

2 Likes

I updated the game to use my new code fro broadcast messages and it is a lot more reliable now. Also, while fixing some quirks I realized it can actually be comfortably played by 2 players with 12 Blinks! So now I am back at the realm of games people will be able to play. :slight_smile:

I will try to record a gameplay video this week but in case you do have 12 Blinks, you can actually play the game for yourself.

There are 2 relevant missing things that I guess are relevant:

1 - There is no way to pass a turn. This is required because it is possible to reach a state where one player has no valid moves (detecting this state automatically is impractical due to the limitations of the platform) so if this happens, the game needs to be reset (long press any Blink). I will add this soon.
2 - The end state will just render all Blinks red so you have to keep track of who is winning yourself in the end. My initial idea for this is just switch all blinks of the color of whoever won. Also, this is a dead end state as you can not get out of it (except, of course, using the reset escape hatch - long press any Blink).

If you try it, let me know what you think. Also let me know if you have any questions, suggestions.

Oh, a reminder that the game has broadcast messages tracking on by default. This shows as Blinks turning white to display the passage of messages. This will not be there in the final version.

2 Likes

This is the perfect setup for 12 Blinks:

2 Likes

Some updates:

  • Turn passing is now implemented. Double-clicking any Blink in the play state will pass the turn to the next available player.
  • End state was implemented (but is untested). The idea , as I mentioned, is that all the blinks will change to the color of the winner (if there are multiple winners, then a proportional fraction of blinks will be in the color of each of the winners).

This makes the game fully feature complete. I am at 98% storage so now I will focus on shaving off some storage usage and implementing/changing animations. What I would love to do is implement an animation for when some player takes over other pieces. We will see. :slight_smile:

If you have to opportunity to play it, let me know how it goes.

3 Likes

Forgot to mention it now supports up to 4 players.

2 Likes

And here is the gameplay video. The quality is terrible and Youtube decided to show it in portrait mode but whatever. I guess it is enough to give an idea of what it is.

2 Likes

Oh, and ignore the blink with a single green pixel. The red component is dead on that face it seems.

1 Like

@BGA The game is looking great! It seems like a pretty seamless port of the original so far! I really like the functionality that you put in to display and select potential moves. In versions that I’ve played on PC they often times use two colors when showing potential move options to signify if the selected piece will be duplicated, or just moved if going to the newly selected space. Something like this might be helpful for newer players to learn the game when starting out. I know that you are running tight on storage space though, and the game is still pretty easy to understand without this feature. Since this game has the ability to be played with such a large number of blinks, I think there is definitely huge potential to make some flashy large scale coordinated animations. But unfortunately it sounds like again the real limiting factor will probably be storage space. Hopefully you will be able to find some ways to consolidate the code and save space to make room. I’m really looking forward to seeing what you come up with!

@TheGoodSire thanks for your comments. I am glad you seem to have liked it. :slight_smile:

Yeah, I was starting to have all this ideas about making it unique in the Blinks platform… But I ran out of storage space.This was a bit of a let down.

Actually doing it like in the PC version would be straight forward because the Blink itself knows if it is 1 or 2 spaces from the origin. Setting the color to a different one would be a one-liner. I was juts worried things would get too busy due to the amount of colors in the board (specially with 4 players) so I opted to only indicate with brightness and even for that, used a single level for copy and move). I guess I can reconsider this.

Yep. I will see what I can do.

Funny enough, I keep finding some more space by rearranging things but then I find some small thing that needs to be fixed that than takes over that space (and usually more) I am currently at 97%. I was at 99% (but most of the gains were simply because I completely disabled the idle state animation).

@bigjosh, @jbobrow this has to be a priority for the next version of the Blinks platform. I am just not sure how to deal with bigger games being attempted to be transferred to Blinks with less storage. Maybe a size check before starting and stopping in case it does not fit? Also, if you increase storage/memory, an option during development to artificially constrain both to the original Blinks would be helpful so developers can be more aware what targets they will reach if their games is too big.

Yep. Even before that, there are 2 things I would love to do:

  1. Remove a bit of the jank on transitions. Currently you can see that the affected enemy pieces change color before the actual piece that affects them does which is kind weird. That is easy to fix but I need storage for that.
  2. Create a takeover animation when a piece change sides. Something like making the piece move from its current color to white and then fade back to the new color, like if it exploded and returned as a new piece. I could even affect other blinks around it and make they change the face connected to this blink to white too (and back to the normal color) to give even a bigger feeling of explosion to it. Currently I can only dream that. :slight_smile:

That is my absolute priority now that the game is running pretty smoothly.

Thanks again for your comments.

1 Like

I tried to compile this game but was unable to because of the symlinks. Arduino runs on several platforms that do not support symlinks so the typical way to include code in multiple projects is to use a library. Your code already seems perfectly set up to be a reusable library.

You can find info here…

https://www.arduino.cc/en/Hacking/libraryTutorial

That tutorial is a bit long winded - it is actually pretty easy and straightforward.

LMK if you have any problems or questions if you decide to give this a try!

Thanks for the heads up. I will look into it. As I probably mentioned several times, I am new at this Arduino thing so I did whatever worked with the IDE without actually copying files.

Meanwhile, you can do just that: Copy the actual files instead of using symlinks. It would be great to have your insight on making it more compact. As it is now, I am customizing blinklib to try to get some more savings (at the same time, moving the guaranteed delivery datagram code to it, which will at the very least reduce memory pressure).

Another update:

I fixed some cases of game stall due to corner cases in message propagation. It looks like things are working almost perfectly now. If you try it and see any issues, let me know.

I fixed the end state rendering. All blinks will switch to the color of the winner player or orange (no player) if there was a tie.

1 Like

I fixed the last known case of a game stall \o/ It looks like it is working perfectly now and now I can go back to just polishing it. And I still have 4% of storage! :wink:

1 Like

lol was watching the video and screaming at the red player at 1:08 to jump and take all three blue pieces out :slight_smile:

Well done, I love this game! I think my first introduction to it was Cool Spot way back when. It used squares instead of hexes, but the concept is the same.

1 Like

Oh my bad, it was just called Spot. Cool Spot was a platformer.

1 Like