Hello!
Discord link: Discord
Last 4 months I have worked on idle/casual game.
(Screenshot of the real gameplay)
(Play the game using a gamepad!)
About Game
Village Craft is an idle simulation game where you take the role of a village elder who is in charge of a gaul village. Plant wheat and apples, gather logs, planks and other stuff. Unlock new buildings, build a ship!
You can also hire and teach your staff new skills.
Use “Potion of Speed” (you need to view short ad) to increase movement and producing speed.
How to play
Run around the village to grab items and stand next to building to replenish supplies.
Wake up your staff if they are sleeping by standing near.
Build a shop to sell items to customers.
Build a pub to exchange cider for coins.
Be attention on rain, it can slow down you and your staff!
Move - WASD or Arrow keys(PC), virtual joystick(Mobile).
You can drop any item from your inventory by tap on it.
TODO
-
Must to have
–tutorial in the beginning about how to play
–integrate GameAnalytics to track game events
–promo materials (icons, banners)
–tuning game balance (it never ends…)
–more detailed model for Pub, Winery …
–find a publisher/platform -
Nice to have
–animations for buildings: Pub, Winery, Bakery etc.
–mobile perf optimisations (last iteration)
– more features!
Development
The main goal was to try Babylon for 3D instead of Unity.
There are a lot of tips and tricks which I want to share with you. But first, lets play a little bit:
What I want:
- 3D
- Simple input
- Simple level design editor
- Possibility to run game on mid-end mobile devices.
Because I had experience with Unity3D, my first prototype was made with Unity. After 7 years of break(I worked with Swift, Kotlin, ObjC, JS in this period) it didn’t change much.
I like DX for javascript development and with tools like Vite/esbuild you can reach high iteration speed. But with c#/unity it is nightmare. You must wait 5-10seconds for code reloading(and my project was not huge).
Another big issue is a build size. For empty project its around 5-6MBs. With game resources you easily rich 20+ MBs. Just see some Unity WebGL builds…
(The Ship in progress…)
So, I started looking for better engine. After some research, I picked 3:
- ThreeJS
- Playcanvas
- BabylonJS
ThreeJS is good for low level or simple projects. I don’t want to invent 100500 wheel so I skip this option.
PlayCanvas is much better and it has web editor, but I don’t see transparency for their API. And I want to use TypeScript.
That was the road to BabylonJS. After some lessons on youtube I created some demos to check API and performance.
My first post on this forum was about multiple canvases so I could render 100 instances of avatar.
(Do you know what tool is it?)
After New Year I found ECS library miniplex . That was my second new thing, but I constantly heard about ECS in the gamedev. I were inspired by this video on GDC about ECS in Overwatch. Also, I heard about ECS from my friend, because he used this pattern about 4 years but with Defold.
So my plan:
- use BabylonJS for 3d render, resource management(audio, models, textures) and lifecycle;
- use ECS for game logic and state;
- use React for User Interface (but I started with plain html+css but decided to rewrite);
- use Unity as a level editor and assets prepare pipeline(instead of Blender).
I really like ECS because it is easy to extend and maintain, easy to find issue and easy to tune performance(in most cases you just move you system’s update cycle to another render frame or delay it for some ms.)
Babylon Inspector is another good tool to finding issues or just tuning settings for your objects. I leave it even for production(with lazy loading of course).
I have some twits about development. Check it out on twitter.
I like this one about Gamepad supports: https://twitter.com/i/status/1642548537329156099
And that’s how I did a party(or VAT, check it here):
(Party hard “ON”)
Any feedback are welcome! Enjoy!
UPD: The title was updated to be more suitable for gameplay.