This was an independent project I worked on one on one with a client - Louis Morel. Louis had already written a book that he was enthusiastic to publish, and felt a suitable way to do this would be through Steam. Louis provided me with the text contents and illustrations of the book, and it was my job to make the rest.
I started with the coding element since I knew that the 'Oakrot' project needed to stay smaller in scale and budget, and the workability of the product was my biggest priority. Each two-page spread game object exists in the Unity scene as world space UI in the form of Text Mesh Pro items. All pages in the scene are converted to an integer and stored in an array that holds all the pages and the correct order. Every time the right mouse button is clicked, the current page integer increases by one, and that object is set active, and the same in reverse for the left mouse button. In this same method, a random page turn sound effect is selected and played, and so is the page turn animation. At this point, the current page is saved using Unity's inbuilt 'PlayerPrefs', overwriting any previous saves. This same data is then retrieved if the player exits the game and reloads from the last save.
Next, I moved on to the modelling and animating phase. I tried to spend a minimal amount of time on this part of the project because I knew clean and complex animations were not my client's priority. As pictured below in my gallery, the book's mesh only consists of two moveable pages. The pivot point of this page is at the binder of the book, and the page is rotated until it reaches the halfway point, when it stops and the other page begins rotating. Increasing the playback speed and hiding the pages until they animate gives the illusion that there is only one page being turned and that this page is forming to the shape of the book. Although this method may not be the most professional, I felt it was efficient to save time and budget - especially since my animation knowledge is very minimal. Once I was happy with my model, I quickly textured it using Substance Painter presets and a random stripes procedural as a custom heightmap for the page sides.
After lots of data input, testing and tweaking, the last stage of development was the environment. Despite this being my favourite part of games development, the 3D art was not my client's priorities, and the scope of 'Oakrot' meant that I only had a couple of hours to spare at the end of the project to create a nice looking environment. To stick to the deadline, I decided to create very simple geometry just to dress the scene where the camera could see. I chose to model a desk lamp, in an attempt to create mood lighting and immerse the player in a real-life book reading experience. I added a touch of post-processing, just to enhance the lighting more, and I last minute added four variations of camera angles to increase accessibility and give the user some choice in how they would engage.
Download Oakrot for free here: