I made a luxurious 5 star hotel
So I made a 5 star hotel like a Pro
A month ago, I started a project and here, I detailed my process of achieving my goals in this breakdown article. Watch out for a bunch of screenshots.
In retrospect, I see many things I did right, as well as a number of things I could have done better. I plan to document them here, so perhaps you can learn from my mistakes and pick up some valuable insights.
The goal was to design a luxury hotel. Simple right? Yeah, I felt it couldn't be so difficult. I had already mastered several Blender modelling tools, the 20% required to get through the 80% of the hard work-- so what's holding me back?
I took out my draft book and listed a number of steps to follow:
Reference Gathering
Blockout stage
Modelling
Texturing
Lighting and Render
And that was about it.
A naive little list.
Concept and Ideation
Light bulb
Well, I jumped into step 1--"Reference Gathering"... For my references, I prefer looking through Pinterest and oftentimes, "ArtStation". After looking through my sources a few iterations over, I gathered a number of items into Pureref.

With just a few images on my mood board, a result of a lack of satisfaction regarding the ideas I found online, I decided to look elsewhere for my inspiration.
At the time, I was rewatching the anime series called "Death Note," and any fan will understand what L means. I got a light bulb and decided it would be a great idea to make an L hotel... and similar to the glyph used in the series, I needed to use something fun also.
Just tilt your head a little bit and you will get it... Ignore the few assets in the larger viewport.
I settled with that concept and decided to move on since I considered it an idea worth exploring.
Blocking
In the blocking phase, I created the frame of the building... the desired L shape.

To keep everything simple, yet a lot more visually appealing without jumping into the worlds of materials too early, I employed the random matcap options. This kept all materials contrasting in their appearance, unlike the universal grey you'd get otherwise. Below, I show the building in wireframe mode.

Well, I was very satisfied with the shape I had at this point, so I took the blocking phase a notch higher by introducing block-out elements for the floors and halls, and pillars, creating a structurally relevant/correct frame for my block-out.

At this point, an idea occurred to me, and if you already know me, I am a big fan of proceduralism. The idea was to work on just one floor and duplicate it on the other floors. A brilliant idea if you'd ask me.

So I started experimenting with making the room shapes for all six blocks on one floor of the hotel. I created my collections of blocks with some empty rooms carved out-- my first derailment from the overall plan.

After completing my exercise of carving out the rooms from each block, I packed all my blocks into one collection called FloorGroup, or so... then the naive me began a Google search of adding a modifier(the array modifier) to a collection. Well... that didn't return any positive result, so I strapped on my geometry nodes belt and quickly cooked something using an Empty Mesh Object that takes in a collection and an instance count... a custom array modifier made specifically for collections.
Take breaks, it is good... helps to spot problems quicker.
At this point, I took a break from the project... just to handle some other work. Fast forward a few days, and I opened up the project and noticed a serious novice mistake in my work--- my block-out was not proportionally up to scale.
No, not even the real-world scale here... I mean, my..., no, the rooms were gigantic, stupidly huge, and the hallways were wide enough to host a basketball game. My dilemma began... It was at this moment that I realised that I'd made a big mistake of derailing from the initial block-out plan.
I almost panicked.
Well, I eventually did something smart. I looked at the bright side of things.
The first thing I did was to adjust the hallway size. This required adjusting the entire block and building frame. Then I started referencing real-world dimensions to keep things proportionally correct.
Still, the rooms were quite big.
However, I was too lazy to correct more things; I liked the overall shape of the hotel as it was.
Modelling
I jumped into this phase not because I didn't care about solving the problem I had identified. No, I did so because I could foresee a reasonable solution if I did.
I started by cutting out the current sizes of each room, and after comparing them to the real sizes of hotel rooms for large luxurious hotels, it turned out some rooms could be turned into business suites, family stay-overs and even entire 2-bedroom presidential suites with living rooms, typical luxurious hotel style.
After seeking out ideas and breaking out of a seemingly creative block moment, I started modelling each room type as I received the guidance... from inside.

It wasn't long before suites started popping up out of digital brick and mortar.

I had fun creating all the pieces that make up our household items... no kitbashing... I wouldn't allow that in this period of my career when I should be modelling everything I can to keep sharpening my skills until perfection.

Within a reasonable time, I came up with a bunch of room layouts...


Next, I combined the rooms to form blocks of rooms, relying on the "Instance to Scene" option of Collections. You can also access it from the Add->Collection instance operations. After instancing rooms for all six blocks, I had completely crafted a floor of resident rooms.


At this junction, I considered a huge percentage of my work done... but I was bitterly mistaken. More on that later.
Remember my proceduralism workflow? Well yes. If I were to make the most out of it, it would be better to texture my objects first, light up the rooms, then let proceduralism do the rest.
Texturing
PolyHaven was a huge lifesaver when it came to PBR textures... I tried several sources, including Poliigon, but I still think PolyHaven has my total allegiance.
I won't waste much time here, and I will just list out the mistakes I made:
I textured a number of the objects with PBR materials, yet I didn't UV unwrap them.
I used some procedural shading nodes that ended up riling Unity up while exporting to
fbx.
Yeah, that pretty much sums this phase up. I later corrected this mistake after applying the same material that worked on object A to object B, and then chaos broke out.
Cube projectionandSmart UV projectwere huge life savers, and I barely had to create my own seams.
As for the procedural shading nodes, baking was an option, but I didn't go that route. I chose the faster and lazier route, which was to just simplify my materials to rely on almost no extra procedural shading, since they didn't really affect the look and feel of my materials much without them.

A sneak peek of the texturing phase, there is more to see in the lighting phase.
Lighting
This part of the entire project is what I enjoyed the most.
As with the texturing phase, I decided to light the room collections and have everything instanced together by the procedural setup.
I put into play some of the lighting tricks I have used in the past in baby projects, and some things I have seen the big guys do.

This is not a beauty shot, but it's definitely one to admire.



I think I have fed you enough for now... let's move on.
Back in wireframe mode, this is the current state of my hotel:

With the gift of proceduralism, it was as simple as increasing the instance count on my geometry nodes to the number of floors my hotel can take and Voila... here it is:

Nice...
Nice...
Nice...
.
.
.
Until...
I couldn't navigate my 3D viewport with ease anymore:

There were too many vertices in the scene for my GTX 1060 to handle...

This was the wake-up call that I needed to do some optimisation... The seemingly final step has revealed to me that there is still a very crucial stage left that I didn't plan for.
I have to make my models game ready... optimization is key here...
Optimization
Optimisation required (a) to reasonably reduce vertex counts and (b) to keep the silhouettes of each object the same.
No, I didn't do retopology because I don't have any moving parts in this model that require rigging; decimation was sufficient.
The Decimate Modifier in blender is the one tool that I used the most here, there are others like the Multires and Remesh Modifiers, but I don't think I have found a use case for them yet.
Here, I can show the before and after of an optimisation on a perticular model...
Before

After

A reasonable 80% decrease in object stats.
After my comprehensive optimisation approach to automated(in the sense that I still rely on instancing and geometry nodes for mass duplication) reduction of vertex count, I was able to get a cumulative 90+% decrease in vertex count. Another trick was to totally stay off 4k textures; I limited myself to 1k.
This helped me get most of the optimisation required for Unity's real-time engine.
Beauty Shots
I have ranted a lot. I will drop the mic and let you browse through the final renders and beauty shots once I am done pressuring my processor and GPU to spit out those renders...
Here are the renders:

I played around with editing the image here.




