Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Shopkeeper Simulator VR - Run your own shop - Game Updates

A topic by absurdpants created Mar 02, 2018 Views: 755 Replies: 4
Viewing posts 1 to 5
(3 edits)

Hey everyone!

Two weeks ago I released a prototype of a VR game: Shopkeeper Simulator VR. Your mission is to spend a day in a grocery store serving customers! Rack up as much points as possible but be aware that you also need to restock groceries with your points!

My motivation were the good memories of a childhood shop and how great it were to run your own shop in VR in a relaxing environment!


Yesterday I updated the game with a new feature: You can use a laptop screen with your VR hands to order new items! Your hand automatically switches to a pointing gesture to make selecting buttons easier. It took a while to implement the colliders correctly (nested colliders, sigh) but finally it works as I imagined. You can do a swiping gesture to scroll the screen, it is still a bit buggy though.

Features:

  • Get points for choosing the correct groceries and adding them to the shopping cart!
  • Updated recently: Use your computer to restock your supplies! Use swiping gestures as you would in real life!
  • Choose between normal perspective and a giant mode!
  • Adjust the customer frequency to your liking!

Supported headsets:

The game has only been tested on the HTC Vive but since it was developed in Unity and SteamVR, any headset which is supported by SteamVR should work.

The current status is still pretty much "prototype", so I am looking forward to feedback and comments!

Link to game page

We invested a bit more in polishing the game and we came up with some nice additions!

Uploaded new version (0.3.1):

  • Buying items creates a smokey effect and a "swoosh" sound to bring new player's attention to the refill crate 
  • Added UI clicking sounds
  • Added global illumination (pre-computed) to improve atmosphere and more realistic shadows!

As always, please give it a try and let us know what you think :-)

Uploaded new version (0.3.2):

  • Moved the Title and Settings screen into the market
  • Added some more info about leaving feedback

New update released (0.3.3):

  • Added some motivating music! (if it stressed you out too much, you can switch it off in the Settings menu)
  • UI improvements

Keep selling!

How we implemented the door mechanics

Hand interaction is generally achieved through the SteamVR Interaction system. You can find the interaction system inside the SteamVR plugin for Unity:

We will soon publish another devlog entry to show you how we used it in Shopkeeper Simulator VR.

To move the door independently from the fridge, the door's mesh was separated from the fridge's mesh in Blender. The blender file was then imported into Unity. Here's the game object hierarchy:

The "Handle" object is the one which should react to the player's hand. Therefore, it was also separated from the door itself. The handle needs two components: The interactable component which is part of the interaction system and the script "OpenDoor" which is explained below:



The two methods

HandHoverUpdate

and

OnHandHoverEnd

are specific to the SteamVR interaction system.  They are called by the interaction system every frame the hand hovers over an interactable object (more on that in another post) and when the hovering ends respectively.

Basically, we are using the cross product of the force vector (pulling force of the hand) and the vector that points from the door's hinge to the transform where the hand is holding the handle (called "doorPivotToHand" vector). Together with the angle between the force vector and the "doorPivotToHand" vector, the angularVelocity is calculated and applied in FixedUpdate(). Note that FixedUpdate should be used and not Update, since we are changing a RigidBody's angular  velocity.

Notice that in order to work, the door must have a Rigidbody and a Hinge Joint component to limit the door's angle. The HingeJoint's limits were set to 0 min and 90 max:



If you fund this useful, please leave a comment below. Also post any questions you might have. Thanks!