Game
Perfect Draw

2 years ago

𝗨𝗜 𝗕𝗿𝗲𝗮𝗸𝗱𝗼𝘄𝗻

- Check out this article focusing on our game's UI design and implementation


Our UI design was a big focus of our visual polish for Perfect Draw, due to the card game genre.


Cards

Each card had a title, type, description, trivia, and instructions.

Caspar designed unique backgrounds for each card type, to help easily distinguish between them at a glance;

Meeple, Movement, Resource, Building, Distraction

image.png

We think the trivia section adds a lot of humour and heart, as well as helping tie the game into the Tremors movie even more.

image.png

There are a few different instruction icons which can display on cards to indicate; must be played ON a building, must be played ON a meeple, must be placed NEXT to a building, must be placed NEXT to a meeple, etc.

These icons can also be hovered to display a tooltip with more information.

image.png

Tooltips

We tried to put tooltips everywhere, while hovering almost anything to give user feedback. We hoped this would help teach new users especially with our lack of tutorial (so far, stay tuned!). Hovering buttons on the main menu, cards in the game, or cells on the grid - all give helpful feedback to the user.

image.png

Card instructions

When a card is selected its name and instructions appear at the top of the screen, any valid grid cells highlight in a different colour, and hovering over invalid tiles will give feedback as to why. This was another method we used to teach new players and just give a better user experience.

image.png

Popups

Another way we give the users feedback is through popups.

There are a few different types of popup, which can be instantiated at any time from any script; Errors, Messages, Notifications, Unlocks, & Name.

  • Errors help give feedback to the player when something goes wrong, especially during login (e.g. wrong password)

    image.png
  • Messages are hooked into our LootLocker system, they download from our dashboard and alert the player if it was published on the current day - otherwise they are listed and viewed from the main menu "View Messages" button.

    image.png
  • Notifications display in game to help show when things are happening in case the user misses something, e.g. "hand full, no card draw" or "Earl killed a Graboid!"

    image.png
  • Unlocks popup either when cards are bought, or the user levels up. They basically show the new card and are intended to make the player feel the reward and progression.

    image.png
  • Name popups allow the player to enter their nickname, it shows up on the first login and can be reopened by clicking their nickname display on the main menu.

    image.png

Menu

The main menu runs on a state system to handle each different submenu, and the movements between them;

		
			public enum State
{
        PRE_LOGIN,
        EMAIL_LOGIN,
	WAIT_FOR_TRUCK,
        PRE_PLAY,
	MISSION_SELECT,
        DECK,
        SHOP,
	LEADERBOARD,
	MESSAGES,
	OPTIONS,
	CREDITS
}
		
	

Each of those states has a different gameobject in the scene which contains all of its UI. These start disabled and offscreen, then enable and lerp onscreen via code when buttons are pressed.

image.png

The states are also linked with camera target transforms, so that each state has a different focal point in the scene - this simple lerp really helps give a dynamic feel to moving around the menu.

image.png

To add to this, the state UI gameobjects also lerp in and out depending on the direction of camera movement (these are manually set in the inspector). When changing to a state, this direction is used to determine which way the new UI lerps in from, and then the old state's UI lerps out in the opposite direction

image.png
mainmenu_lerp.gif

We added the truck driving in and out of town as you log in/out as a cute little extra, using the truck animations and sounds from the main game. It just follows a simple set of target nodes to animate along the road.

mainmenu_truck.gif

UI Elements

Each type of UI was prefabed to allow easy and fast iteration on style/design/functionality over the whole scope of the project. For example; MainMenuButton, MainMenuInput, etc

image.png

ReachForMouse.cs

This simple script is attached to all our buttons, etc to add a nice extra layer of effect - buttons ever so slightly reach out towards your cursor as you approach them. This helps to make the menus feel more dynamic.

		
			Vector3 mouse = Input.mousePosition - new Vector3( Screen.width, Screen.height ) / 2;
float dist = Vector3.Distance( mouse, StartPos );
if ( dist <= MaxDistance )
{
	var dir = ( mouse - transform.localPosition ).normalized;
	transform.localPosition = Vector3.Lerp( transform.localPosition, StartPos + dir * MaxReach, Time.deltaTime * LerpForthSpeed );
}
else
{
	transform.localPosition = Vector3.Lerp( transform.localPosition, StartPos, Time.deltaTime * LerpBackSpeed );
}
		
	

Thanks for reading!

Check out the game for yourself here;

https://gamejolt.com/games/perfect_draw/730210



2 comments

Loading...

Next up

Expand the article to view our strategy guide!

𝗟𝗼𝗼𝘁𝗟𝗼𝗰𝗸𝗲𝗿 𝗕𝗿𝗲𝗮𝗸𝗱𝗼𝘄𝗻

- Check out this article focusing on our game's usage of LootLocker systems

I put together a wee trailer for our Tremors strategy card game!

Happy #WIPWednesday!

Are you working on a game?

Making some art?

Practicing a song?

Something else?

Tell us in the comments!

𝑪𝒂𝒓𝒅 𝑩𝒓𝒆𝒂𝒌𝒅𝒐𝒘𝒏

- Check out this article for a full list of all the cards in our game!

Happy #WIPWednesday!

Are you working on a game?

Making some art?

Practicing a song?

Something else?

Tell us in the comments!

Working on our game's intro in the final stretch of the jam!

A winning playthrough of our Tremors card game

Check out what happens when these cute little Graboids come face to face with Burt's Elephant Gun!

Happy #WIPWednesday!

Are you working on a game?

Making some art?

Practicing a song?

Something else?

Tell us in the comments!

𝗡𝗲𝘅𝘁 𝗦𝘁𝗲𝗽𝘀

- Check out this article delving into our post jam changes