Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Magic: The Derezzing

A topic by internationalfish created Jul 31, 2018 Views: 712 Replies: 11
Viewing posts 1 to 10
(+1)

For my second serious jam attempt, I'm attempting not to fail to make a really simple deck builder. Basically: You start with a few cards in your deck and an empty library, and you fight a really stupid AI with a similar deck. If you win, you get a leveled up version of one of his cards. Playing a card (usually, and to start with, only) spawns a unit that will fight the AI player's units automatically, so all you do is pick which card to play at the beginning of each round.

I like to divide work up into phases, so here are the ones I'm starting with this time.

  1. Initial setup
    1. Cards
      1. Define and implement Card data structure(s)
      2. Define and implement Unit type
    2. Battlefield
      1. Piece together background sprite
      2. Create battlefield scene
        4 rows, 4 cols, 0px borders: 16x16px cells
      3. Basic battlefield manager script
        1. Start with placeholder static player/enemy Decks; only attack-type Units, no Instants
        2. Shuffle Decks
    3. Rendering
      1. UI corner card rendering with deck count
      2. Player hand overlay of top three Cards
      3. Sprite rendering of Unit on battlefield
  2. Punchline
    1. Play a card
      1. Implement Card click/touch in overlay
        1. Fade out overlay
        2. Remove Card from deck
        3. Instantiate and render Unit (fade in)
    2. AI intro
      1. On AI turn, play a Unit card if possible
      2. Instantiate, fade in Units same as player
    3. Initial round
      1. Implement 3 or 4 board positions for player and AI, if not already done
      2. Alternate player and AI playing Unit cards for 3 turns
      3. Third turn: Start enforcing must-play rule
        1. If no Units in deck, lose
        2. If Unit(s) in deck but none in hand, require discard until one is found
    4. Unit on Unit action
      1. On third turn completion, start fight/draw process
      2. In order played, Units select and attack enemy Unit
      3. Trigger next player, AI turns
    5. Win, Lose, or Draw
      1. Lose/Draw screen (same result for player)
      2. Win screen
        1. Show and award player one random card from opponent’s hand
          1. Level up this card to initially make winning useful
        2. Create dummy card management scene
        3. Redirect player to card management
  3. Come with me if you want to… die
    1. Deck/library UI
      1. Two rows of tabs on top; horizontally scrolling card listing on bottom
      2. Implement live filtering for primary/secondary tabs
      3. Need UI element to enter fight
    2. Card click overlay
      1. Move card to the left and show buttons
      2. See pixel layout at bottom
      3. Deck add/remove, trash buttons
  4. Heal/defense
    1. Add/implement this type of Unit
    2. Test with player deck
  5. Instants
    1. Add Instant type cards and effects
    2. Implement in battle scene
  6. Superficial Intelligence
    1. Teach AI to heal
    2. Teach AI to use instants

Here we go!

...and it turns out Unity 2018.2 for Linux is an absolute trash fire. Everything from rendering failures to UI crashes. Great... time to boot into Windows.

A 64x64 deck-building game, such a lovely idea. I'm already looking forward to try your game! It's seems quite ambitious for a 2 week project though if you stick to the core stuffs and prioritize your work I think it's definitively doable.

Good luck and (more important) have fun!

Thanks! Yeah, I'm hoping to just get the basics in, that's really all that matters. Get the thing playable.

I switched to Godot because fighting with Unity is all I ever do with Unity... so now I'm fighting with Godot.

Wow, and I thought Unity was bad... the main reason I was open to actually switching to Godot right at the beginning of this jam was because the Unity 2018.2 release on Linux is unusable, and because VS Code in Windows is inexplicably stupid compared to its Linux release, which is really, really good.

Now... I don't know. I'm finding myself absolutely hating GDScript, which is a sad excuse for a scripting language, and people are absolutely right about the state of documentation for Godot. It's abysmal. And the node types... just... ugh. They seem really great! Seem. Trying to actually get them to work as advertised, though? Think a ScrollContainer should be a container that scrolls with its contents? It seems to think so, too, but it's idiotically difficult to get that to work. And it seems not to allow removal of the scroll bar... or to support mouse click-and-drag... in many or most common scenarios.

I think I'm going to see if I can implement that behavior in a reasonable amount of time using signals, but if not... screw it. I'll just go back to a version of Unity that works for more than five minutes at a time in Linux and give up on actual pixel perfection.

Despite some arbitrary ugliness with event handling, I managed to get a click-and-draggable list working in Godot... I was so frustrated yesterday that I didn't put the project into version control, so I can't integrate this code yet, but when I get home it should be easy enough.

It's pretty much the opposite order I'd intended on doing this in, but hey, no time to complain!

Coming back after quite a while for a pretty good update.

  • The above click-and-draggable container is working really well after some tweaking, and the library should have just relatively minor tweaks before it's usable.
  • Battlefield rendering is working well, including:
    • Graying out units via shader so the attacking/defending units stand out
    • Flashing the attacking unit old-school FF style
    • Shaking the attacked unit
    • Level display per unit

It's not amazing, but I'm pretty pleased. Despite all the time I've been wasting on Diablo 3 for the last week, I think I should manage to get this to a playable state by the deadline! Lots of tying things together to start doing.

Well, here you go: Automated combat between the player's units (lower left) and the computer's (upper right). This part happens with Highly Advanced AI, which is to say the units pick a random unit on the other team to attack. It's kind of hard to see the effects, even though I turned the capture rate up... ah well. The numbers are their levels, current all 4. 4 is a good number.


This one has a lower capture rate, but shows a little more combat (the pause in the middle is me manually starting a second round). Since it's so exciting and unpredictable!


For now they're battling their little hearts/pebbles/lobes out on a boring field of brown construction paper, so that obviously needs some work. And the whole UI thing, since someone is supposed to actually play these things. But it's some fun progress.

Almost to the point of playability. It might actually get there today, depending on how much work gets in the way... pretty much all of the transitions are in, deck and hand management are in, and combat works (as above).

If I can get the last few bits there worked out, it's really just down to win/lose UI and then audio. With interview prep to do tonight and the interview itself tomorrow, though, all the nice extras are out the window. Ah well, par for the course. :)

Love your pixels! Especially those eyeballs - they’re so squishy.

(1 edit)

Thanks! Wish I could take credit, but they're from this asset pack:

https://henrysoftware.itch.io/pixel-mob

The artist has some other really great stuff as well.

Well, I don't think I'm going to get audio in, but I've put up the game such as it is.

https://internationalfish.itch.io/magic-the-derezzing

The core loop is there, so it's at least playable; didn't get as much done as I wanted, but I'm glad I got it to the point of being submittable.