Hi all. I’m new here, so consider this as my first introductory post.
I’ve been software developer for almost 10 years. Mostly I’m doing websites and various business systems and I’m using C# and PHP languages. At the very beginning I used to code in C++ and had lots of fun experimenting with Microsoft DirectSound and DirectShow. It’s hard to find that kind of projects nowadays in my country (I’m from Latvia, BTW), hence my C++ skills now are somewhat behind the times.
I’ve been following game engine blogs, reading lots of articles for years and I found that some ideas can be reused in my everyday work on business systems.
But some time ago I decided that it would be great to actually have my virtual 3D playground to try some new ideas and just have fun for myself and my coworkers. At first I considered various game and 3D engines out there - Unity, UDK, Ogre3D, CryEngine… For long time most of cheap game engines were too immature, too complicated or too expensive for just having fun, and free or cheaper versions lacked many useful features.
And now we have this great offer of UE4. As I understand, I can just spend 19 Euros, get the engine with its source code and play with it, and I can stop my subscription at any time still keeping the source? That sounds awesome.
But before I get involved, I’d like to know if this engine will support my requirements out-of-the box or I’ll have lots of work to do. Here is what I would like to have for my 3D playground:
- Central game server (no 3d rendering) which calculates game physics and logic
- Game clients which connect to the game server. Physics on the clients is just for client-side prediction to make things look nice and smooth. The central server is the authority.
- Ability to load game assets and current game world state from the central server (no matter if through simple HTTP or through UE itself, if it provides any facilities to do that).
- Game clients should be able to connect to remote SQL database (again - no matter if directly or through the game server) and check if they have the latest version of game assets; if not then clients update their cached assets automatically.
- Remote asset loading should be performed on demand without any loading screens etc. While player is walking around the game world, the engine loads the latest versions of assets.
- Ability to edit game characters in-game. Think about something like Sims where I can adjust 3D meshes and textures using in-game UI and then save my result as a new game character.
- Lipsync form audio file or at least text file would be great - as in Source Engine.
Does UE4 provide built-in facilities for these requirements?
Also, I have read an interesting article about an approach to implement game entities and logic:
I thought it would be great to organize my game entities and logic in a similar way as described in the article because then I could easily serialize entity states to SQL database and later load them when client logs in. Essentially, game entities should be just like “component containers” where each component is just a bunch of state properties. These components and properties then get processed by game logic systems which implement the game behavior.
Would it be possible to apply such an architecture to UE4? If currently UE game entities do not work that way at all, then how hard would it be to create some kind of a thin wrapper around UE entities and game logic to make it work as described without too much complications and changes in UE source code?
Thank you for any ideas.