Collab for potentially cool game *wink wink*

So, there’s a cool google doodle called rise of the half moon and I love it from the art to the game play.
So I tried to make it in Makecode. Then I realized I am not that good when it comes to things like arrays, boolean, or randomness. And that is part of the game (I think, again I’m not familiar with arrays and whatnot) And I took a small break from javascript for a few months and I’ve completly blanked out. So if you would rather help with javascript or blocks, tell me.
I might also need help with a little bit of art.
I’ll see the poll’s results and go from there.

  • I would want to collab for everything!
  • I would only want to help with art.
  • I would only want to help with coding. (Blocks)
  • I would only want to help with coding (javascript)
  • I would only want to help with coding in general.
  • No thanks not for me…
0 voters

And no, I will try to do most of the work, so if you collab and sometimes just want to be making suggestions and I’ll do it is ok with me!

Thx so much, @Skittlesaersuper

5 Likes

Sorry, I have seen too many collars fail :man_shrugging:

5 Likes

I really like that game!! The main issue you are going to have is figuring out how the opponent chooses its moves. It might just be the best move that it has, but it could also have some way of planning ahead, which is very hard to replicate! It could even be a simple AI that Google trained, which would be essentially impossible to replicate.
The second issue is the scoring, aka how to search the grid-like structure for the strings of matches and award points accordingly. This is also coupled with the animation of the tiles getting connected to show you the string of tiles it’s awarding points for. You are very correct that this will involve a lot of arrays and such.
This is a lot of work!

Well I know that collaborating on games is hard and almost never works out, I would love to be part of this!! I will be available if you have any questions or want suggestions on how to implement certain features! If you want me too, I will try my hand at the level and points logic, because I’m a math and puzzle kind of person and that would be my favorite part to work on.

I will also mention that it will be much easier for me to help if the project is in JavaScript, simply because blocks are so laggy and take longer to load. In addition to that, working with arrays and stuff is, in my opinion, much easier in JavaScript than in blocks.

I really, really like this idea for a game and, honestly, if you ever give up on the project, please share the code you do have, because I might like to try to work on it if you won’t!!

I will also say that focusing on the logic first and ignoring the art/graphics will be the best strategy. If people want to do art they can, but not wasting time on art while you still have the energy and ambition to work is going to help you get through the tough parts of the coding process.

2 Likes

Make sure to use a custom palette! This game is practically begging for a low colour mono ramp palette

2 Likes

I’m really bored right now, (at a robotics competition!) so I’m going to start on the point search and level logic. If someone else wants to try their hand at it, it’s an interesting challenge! I wish you luck! I’m going to be doing this in JavaScript, but if the project ends up being blocks it should be easy to port over, or make some sort of custom extension you can import. I’m definitely going to use a class to store the points, connections, etc, but I should be able to port class logic over to blocks in the form of many arrays, so it should be fine.

1 Like

I’m almost done! I’ll make sure to add a way to keep track of which player owns which tiles for scoring the bonus points.

I have same-tile and full-moon pairs working (those were easy) and I’m about half way through the last one. I have to say that this is the most recursion cursed brain hurting coding problem I have encountered and I’m loving every bit of it!!

If you want to start on maybe some animation logic, the completed arrays of point-earning sequences are outputted in the form of an array of number arrays.
The numbers are ID numbers for elements of a class, and are the order in which they were defined/created.
Idk if that info is really all that useful, but it could be, idk. It probably looks like word soup :rofl:

1 Like

It works!!! :star_struck:
That was a really fun recursion challenge! So many array shenanigans! :heart_eyes:

Anyways, it’s all commented out, so hopefully it’s a little bit easier to understand. Idk how easy it would be to add this to another project, but I’ll try!

If anyone wants to make art and/or art related suggestions (and a pallet! Looking at you @Luke :eyes:) please do that! I’m a math guy, not an art guy. I did actually change some colors in the demo, but only because the light blue was hurting my eyes :rofl:

If someone wants to play the Google version for a while and try to figure out what the opponent considers when making moves, be my guest. My best guess is that sometimes it picks the best possible move and sometimes it goes completely randomly. I know that it goes randomly sometimes because sometimes it places a card somewhere that would have gotten points if it was somewhere else. I have no idea if the bot considers stuff like bonus points. It would be very easy for me to make a bot that knew which card played where would get the most points, though a lot of strategy stuff is probably beyond my abilities.

I also had the idea of a multiplayer version, which would be fairly easy to make, though you would need to use separate-screen multiplayer so that your cards would be hidden, and idk how any of that works.

4 Likes

Same-moon pairs only earn one point, so I’ll code that in. (If this gets approved before the link I sent, that link does not have this fix, it will be the next one)
I wanted to try my hand at the opponent, so I made one that plays whichever tile, out of the three in its hand, will earn the most points, and plays randomly if none will earn points. So far, just playing against this opponent, the winner is largely determined by who gets to play the last card.
This is not how the Google version feels, so I suspect that something like how Mario Cart gives better powerups to the people farther behind is happening, where the cards you get are weighted in your favor. Either that or the opponent deliberately is playing to make you win, which is interesting.

2 Likes

Oh my gosh tysm! This is really impressive :star_struck:! And I’ll try to code the other match pairs off of this, if thats ok w you.

1 Like

You can do whatever you want with the code! I fixed the same-tile pairs, but I purposely didn’t let that link update because I was experimenting with making the opponent. Here’s that project, the one with the opponent I described in my last post, as well as the fixed pair tile points:

There are now even more comments! That may mean that it will take the mods longer to approve it (sorry mods :upside_down_face:)
Also the new emojis are so cute! :winking_face_with_tongue:

2 Likes
1 Like

Ok I love the color palette (Way better than what I was working with) So I am going work on a title screen, levels, music and the best part… THE MOON!!!

2 Likes

After playing the Google version for a while, I think that both players have a sort of “deck” and that it only lets you get at most 2 of each card per game, as if you and the opponent both have a deck with 2 of each card inside. I suspect coding this in will prevent the wild shenanigans that often result in me and the opponent filling the board with full+empty or half moons. This is a change I can easily make once you are done doing all the stuff you want to do.

2 Likes

When you do that, please change the way the points are displayed! Use something like the arcade-text extension to make sprites display the scores instead of the built in system. Also, so sorry about how tedious it is to define levels! To delete the current level you should be able to just do “slots = [ ]” which will basically wipe away all the currently loaded slots.

Also, you will probably need to change the code that draws the slots, because none of them are sprites or anything, they are all drawn on the background image, but if you make the moon into a sprite it will always show up on top of the background image, so it should be fine.

If you want to change the whole background to not be a solid color, you can remove the “let tempImg = image.create(160, 120)” and instead do “let tempImg = img.” and then edit the image to be whatever you want the background art to be, or you could make a new variable to hold the background image and then set tempImg to be a copy of that other variable every time. (If you do the second option, make sure to use a copy of the image by writing (the image variable).clone)

On line 257 you can change the 2 “12”s to change how far away from the tiles you can click to register clicking a tile.

The bonusPoints function is not really how I want it to work. If you change the playerBonus and opponentBonus to be arrays, you could push the IDs of the slots into them instead of just increasing them.
Then if you check to see if every slot is filled, you can call the function, set currentPlayer to 2, call “animatePoints([opponentBonus])” (wrapping it in another array is necessary), set currentPlayer to 1, and then call “animatePoints([playerBonus])”

Sorry that’s so complicated, I also didn’t write anything that checks if every slot is filled. You could look at the top of the opponentTurn function to see what that code would look like, just putting that into a function and replacing the .push bit with “return false” and then a “return true” after it, so the function will only return true if every slot is filled…

Sorry I’m ranting, you can probably figure all this out yourself, I’m just worried about it my code is readable enough to work with is all. Hope all this helps!!

3 Likes

Are you still working on this? Just checking, cause it’s a really cool project and I would love a finished version! :upside_down_face:

2 Likes

I’m doing the best I can. I have homewrk im multitasking with. I just need to remember to update regularly, that’s my bad :sweat_smile:
I’ll submit the updated one so far in a bit. There are some sigh null issues.

1 Like

I can help with those if you want!

1 Like

If you’re interested in incorporating this rule change—limiting the number of cards that can be taken to prevent overly chaotic or unbalanced play—it seems like a straightforward tweak that would improve the overall game design. It would ensure that each player has to be more strategic with their moves and not just flood the board with certain types of cards, preventing situations like full + empty or half-moon configurations that disrupt the game balance.

2 Likes