Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

The Land Itself

A topic by SeriousBug created Jul 11, 2020 Views: 729 Replies: 28
Viewing posts 1 to 19
Submitted (1 edit) (+2)

Hi! This is going to be my first gamejam, and my first (hopefully) playable game. I'm a grad student, doing research on programming languages, persistent memory & data race detection. Grad school is busy so the amount of work I can put into the game is very limited, but I'm planning to have something playable at the end of the jam.

This is my pre-jam idea post. I'm planning on making a game inspired by the tabletop storytelling game "The Ground Itself", Dungeon World expansion "The Perilous Wilds"s map drawing phase, and "Hand of Fate"s card mechanism. It is going to be a low-poly 3D video game.

The game will be about how places change over time. The game will take place in a fixed location, over a certain period of time. The player will have a deck of cards. Each card, when played, will cause the location to change and advance the time by some amount. I don't think the game is going to have a fixed goal, it's more about playing it end seeing what you end up with. I'm planning to visualize every card, so when you play a card you see how it has affected the location. For example, you might play a card that causes a rainy season, which will show up as rain and flooding. The interesting part is going to be how the cards interact with each other over time. Say, the rainy season card might cause a flood if played twice in a row, but bring a plentiful harvest if you played a farmland card before it.

I'm developing the game on Linux, using Godot and Blender. I'm planning to model and program everything from scratch, but I'll likely use some free assets for sound effects and music.

I see that everyone is posting schedules, so I'll come up with one as well:

  1. Create project, come up with at least a dozen card ideas. Model a card base, and the base empty terrain.
  2. Program in the cards, e.g. a base class for cards, some data structures to store and shuffle the deck etc.
  3. Put the card base & terrain into Godot, program the drag & drop mechanics for the cards.
  4. Model the effects for 3 cards.
  5. Add the cards & program their effects in Godot.
  6. Model 3 more cards.
  7. Add them to Godot as well.
  8. 3 more cards.
  9. Add to Godot.
  10. Last 3 cards.
  11. Add to Godot.
  12. Add sound effects and music.
  13. Add a startup screen.
  14. Finalize and upload it!
Submitted(+2)

Day 1:

I've modeled and textured my card! I created a simple model in Blender, then drew a texture in PixelHeart (android app). Hand-drew a heightmap in the same app, then used Gimp to create a normalmap from it. I really like the resulting style.

https://imgur.com/a/1szQBY3

I also designed the land the game is going to take place in. It's not much to look at, but I think it'll look better with some trees & building thrown in.

https://imgur.com/a/6va8gTU

I've been thinking about how the cards are going to work, and came up with a few ideas.

There will be 2 types of cards, events and buildings. Event cards cause an event to occur, and then are discarded. These events can cause lasting effects. Building cards only appear once in the deck, and they are not discarded when used. Instead, the card remains active and provides some benefits until an event card causes it to be discarded.

The player starts with a limited number of cards in their hand, and a limited deck. Discarded cards go into a discard pile. If the deck runs out, the discard pile is reshuffled and placed in the deck. The player only draws cards if an Event or Effect tells the player to. If the player runs out of cards in their hand, the game is over.

Here are the cards and effects I came up with:

  • (Building) Farmlands: If a Rainy Season is played while the Farmlands are active, produces an Abundant Harvest effect.
  • (Building) Mines: If a Strike Gold is played while the Mines are active, produces a Precious Metals effect.
  • (Building) Docks: If a Trade is played while the docks are active, draw 2 additional cards, even if no effects were consumed.
  • (Building) Lumber Yard: If an active building card is discarded while the Lumber Yard is active, the player can choose to discard the Lumber Yard and re-activate the discarded building.
  • (Event) Rainy Season: If played twice in a row, produces a Flood effect.
  • (Event) Drought: Consumes an active Abundant Harvest effect. If played twice in a row, produces a Famine effect.
  • (Event) War: Discards a random active building. If no buildings are active, it will instead discard a random card from the players hand.
  • (Event) Pestilence: Discard 2 random cards from the players hand.
  • (Event) Strike Gold: Produces a Gold Rush effect.
  • (Event) Trade: Consume Abundant Harvest and/or Precious Metals effects. Immediately draw as many cards as turns were left on the consumed effects.
  • (Event) Soothsayer: Look at the next 3 cards in the deck. Pick 1 to draw, and discard the others.
  • (Event) Festival: Draw 3 cards.
  • (Effect) Abundant Harvest: Lasts 2 turns. The player draws 1 card at the end of each turn.
  • (Effect) Flood: Lasts 2 turns. All active buildings are disabled for the duration.
  • (Effect) Gold Rush: Lasts 4 turns. Draw 1 card at the end of the turn.
  • (Effect) Precious Metals: Lasts 4 turns. The player must discard and replace 1 card at the end of each turn.
  • (Effect) Famine: Lasts 2 turns. Discard a random card from the players hand at the end of each turn.

I'll definitely need to balance the cards, I just made up the numbers for now. I'd love to add more cards, but I likely won't have enough time for more.

This is a really neat interpretation of the theme, especially with the planned synergies between different weather elements. The pixelly 3D model for the cards is neat too, looking forward to your results :>

Submitted

Thanks!

Submitted

I love tabletop games! Excited to play this game! btw, the pixel art is cool

Submitted

Thank you!

Host

ohhh i love how these cards look! it's such an interesting aesthetic. you can also embed images using image tags (it's the last button at the end of the format options). this looks so organized though, and a very thorough start to the game's design. i'm excited to see more of it, esp how the cards will look in game! best of luck with the jam!

Submitted(+1)

Thanks for the jam!

Submitted

Day 2:

Figured out how to get text on the cards!

I don't know if this is the ideal way, but I'll explain how I did it in case anyone is trying to do something similar in Godot: Create a Viewport, with a Label as it's child. Then create a MeshInstance, and add a quad as the mesh. Next, create a SpatialMaterial for the mesh, pick "Local to Scene" and "Transparent" for the mesh, then create a Viewport texture for it. Enable "Transparent" and "V Flip" on the viewport. Mind that if you click on the Label, Godot goes into 2D mode, but you can't actually see the label in 2D. You have to switch back to 3D to see what you are doing with the label.

I also created a scene for the deck. I decided to use Godot's scene tree to keep track of things instead of an array, so I'm going to put all the cards in the deck as children of the deck.

Submitted(+2)

Day 3!

I coded the deck, the player's hand, and the discard pile today. I don't have any animations on the cards, but I might add them if I have time before the end of the jam.

Submitted

This looks really juicy! I love the card design!

Submitted

Thank you! :)

Submitted

Day 4:

Got some models designed for cards today. I'm on track with my plan so far, yay! So, first of all, I added a river to the land:

On the bottom right corner is the farmlands with a single maize plant on it, which you can't really see! Hopefully it'll look better when there's a lot of them covering the whole thing. I also added some design for when the area is flooded:


The flooding raises the levels of the river, and also puts the farms under water. I think that's a good visual representation of why the flooding effect disables buildings. I'll continue to add more areas for flooding as I design more buildings.

Here's some closeups of the trees and the houses:

I'm planning to have a hidden population counter that goes up or down based on the cards played, and depending on the population houses will get built or abandoned. Similar for the trees, I'm planning to have several sections of a forest, and have them get chopped down when the lumberyard card is used. That way, at the end of the game, you'll be able to see the effects of the lumberyard in the environment.

Submitted(+1)

Day 5!

Did a few things today. One thing I forgot to show yesterday was the corn plant I designed. Today I used Godot's MultiMeshInstance to place thousands of corn plants all over the farmlands, but it causes a massive dip in framerate (going from 200+ to about 20)! I guess that's just way too many meshes. I guess I need to figure out a way to simplify the plants somehow. Perhaps I could render them into flat textures, then add them as 2D sprites.

Another thing I did was to place buildings around the land. I played around with light and shadows to get something pretty cool.

I also implemented some code for playing cards, and their effects. The code is quite messy right now, I need to work on simplifying and fixing up things 

I implemented the Farmlands and Rainy Season. Also added Drought, but it's buggy right now. I added a font from Kenney's assets too. Here's how the whole thing looks now:

Submitted(+2)

Day 6:

Got a lot of other work to do, so stopping early today. I modeled the mines, and the model for the "Strike Gold" card. Here are the mines:

That's when the mines have been built, and with the Strike Gold effect active. I love how sparkly the gold looks, here it is without the mines being built:

Host (1 edit) (+1)

OHHHH SO COOL!! im really digging this aesthetic!! augh god it's really neat seeing this coming together with the card UI over the world and seeing them affect it, esp w the rain particles. great stuff!!

Submitted(+1)

Thank you very much!

Submitted(+1)

Days 7 & 8:

Mostly missed day 7, but I did some important refactoring for Day 8. I initially coded up a horrible implementation for the cards, but it was extremely buggy and not very scalable. So I went back and refactored it.

With the new design, there's a CardBase class, and a class for each card in the game. The classes get loaded dynamically as the cards are played, and there are some data structures to keep track of the cards. Here's how the card classes look like:

And the code that loads up all the cards to the deck:

Finally, the code that manages the game's card state:


I'm pretty happy with the code now. I wish GDScript had a few more features, like first-class functions (e.g. function references, lambdas, closures) and a little better typing, but it works well enough.

Next, I modeled the docks, and a few ships to go by the docks:

The box looks pretty ugly, but I'm feeling pretty out of ideas about the ships, so I'll have to keep it.

I added the mines to the game, and the refactors I made also fixed the bugs with the Drought cards. Here's how it looks like now:

Submitted

I'm not usually one for card games but this looks awesome! keep it up!

Submitted

Thanks for that!

Submitted(+3)

Day 9:

I tried to add some camera movement, making the camera follow the mouse. I think it really brings the game together, especially the cards!

I added the docks and the ships to the game, and added an animation on the ships to make them look a little more active, you can see it at the end. I'm having some trouble with reusing the animation on the other ships, but I think I figured out how to do it, just need to redo the animation.

The bigger problem is limiting the camera movement. I'm having trouble clamping the camera to the play-area. I tried a few options, but all of them either do nothing or cause the camera to start convulsing and shaking. Does anyone have any ideas how to limit the rotation of the camera for Godot? Right now, I raycast to the mouse position from the camera. I have collision set up on the land. I have a dummy spatial node next to the camera, on which I use look_at to make it look at the raycast collision point. Then, I use a tween to modify the transform.basis of the camera to match the dummy node. However, I'm not sure how to limit the rotation. The basis values, or even Quat of the basis does not make much sense to me. I would very much appreciate any help.

I think I might modify the code for the camera movement later to manually do rotations based on the mouse location (e.g. if on the left side of the screen, rotate 1 degree to the left every frame until 5 degrees). I'll have to try that later.

Submitted

This game looks really great. Looking forward to it!

Submitted

Thank you!

Submitted

Day 10:

Wow, so there's 4 days left?

Since the last day, I fixed the camera movement. Instead of the complicated method I did with raycasts, I instead opted for manually calculating rotations on the camera based on the mouse position. Here's how the code looks like:

You might be wondering what the weird formula is. This calculates a smooth rotation speed so that closer the mouse is to the edge of the screen, the faster the camera rotates. I got the formula by going on some online curve-fitting calculator and inserting points to match the curve I wanted.

I also fixed the ships. Here's how they look now:


Finally, I came up with a simple design for a logging camp:



I already have 2 types of trees designed, so I need to just insert all of them into the game.

So far, I'm still missing about 5 cards! I might have to put them in with minimal visuals to meet the deadline. Otherwise, the game is coming together pretty well.
Submitted

Really excited to play this one. Cards, dynamic landscape, tiny boats, it's got everything I love in a game!
Keep up the good work :)

Submitted

Thanks!

Submitted

Day 11!

Implemented most of the cards now, I'm only missing Soothsayer, Logging camp (lumberyard), and the Precious Metals effect. There might be a few more things missing, but I should be able to add them in time for the deadline. I also put together a simple game-over screen. Here's how all of it looks together:

Submitted

Day 12!

Still missing the implementation of a few cards, but I added music, sound effects and a title screen.

Turn on the sound on the gfycat to hear the music and sound effects!

Submitted (1 edit) (+1)

Okay, I didn't update for the last few days, but finished the game in time! Yay!

All cards are implemented, a few of them don't have any visual effects but that's fine. I added the buldings and trees as well, and the game looks much more cohesive now.

Please try it! I have Windows, Linux and Mac versions available:

https://itch.io/jam/my-first-game-jam-summer-2020/rate/711488