Jump to content

Welcome back

This is a new trip

Sign in to follow this  
Aki

Guruu 3D Gaming

Recommended Posts

Hey guys, today I bring to you the start of my Capstone project required for my CS degree. 

I wanted to build a game since it has the potential to show of really powerful skills a programmer should understand the concepts of.

I would like to say I did not create any of the models here. All i did was download a bunch, and learn how to attach things. I grabbed models and graphics from other scenes and used them here. I was more focused on the code itself.


I have spent the early stages of my winter break developing the core. 

I would also like to note: I am not using Unitys built in networking. I have a custom Server Client TCP connection set up by no one other than yours truly. 

I have manage to get
networking connectivity
player instances
player character models
uma character models (dyanmically adjustable[size/ears/head etc] 
this is just a basic naked guy that is univeral model easily applicable to other armor models and such
byte buffer for both client and server
buffer read and write across the network efficiently. 
Evaluates the entire byte array without packet loss.
I have some basic character controllers setup with a decent camera controller. 


I will mainly try to provide updates and a picture in regards to what progress is looking like..


Here is my recent work which includes everything above and a little more. I'll try and keep this thread posted smile.png


Theres been a ton of other things done but I wont sit here and type it all out because I may aswell just then make a tutorial video on how to make an mmorpg on unity lmao

823ffdf7b622aa488f9f88d9703ddb0a.gif
4bf330fa6984fa903ab8571449cceaa3.gif
dfc1835a30f1f276650d9698e75a57f2.gif

Been working on a powerful state machine system for my characters or entity i should say because i can apply this to other game objects such as npcs..

in the picture u can see jump state is enabled all the way up till he lands which brings him back to idle state. 


282a21d6d4fc1faa5d38e2fc5ad2b5af.gif


states are active for as long as it needs to be in.. meaning if i decide to have a follow player system i simply go to my idle class and/or walking class to set a follow character, then in walking state i would just have in my update function something like if (followSelected) move as needed... and then i would put it to idle state if player a has stopped moving which can be detected if player[index].state == idle  

:) Some rough pseudo code for a follow system that i though of as i put this reply up haha :) SOME POWERFUL STUFF :)

Easy to add combination mixing, and actions within the time of the state :)

heres a quick run jump combination going to idle, mixes jump walk and idle all at once quick and easy. 

0cbc48429290f76c2d65b819235bacb2.gif

SO POWERFUL haha <3

Been working on terrains lately and heres some random stuff generated >_> I probably wont ever design my map from scratch cause i am not a designer. Always looking for help where i can't prevale. smile.png

Theres also like some bird noises and water noises...
 

e935f40d49d1a363933fb3e4d659ac22.jpg

 

8459fbdaebf304d81294a981233d17c7.gif

 

I've really been debating on what kind of art style i want to follow for future game enviorments, and i chose to go with lo poly. After i finalyl decided which literally took me so long because all the assets i was checking out where pretty slow dls thanks to my shit pc and net. But Now that i have done it all i started working on a asset loader to improve MMO gameplay. What i have created basically allows your client to load and unload the required assets for current area. 

eae2721f42e8b15cdb36c8db9cc834fd.gif


418cdebfb55b2692ffb4ea74e519a9bb.gif

smaller objects will the farther u are and the bigger ones will load as u get even closer


my next plan is to setup a few AI's apply my target system i have made. Create an target game object of some sort to show that u are selecting something then figure out how to shoot something from my hand to the object. Will apply my spells there.


Been working a lot on the mage class because thats is the hardest skill i believe to do for an mmorpg.
I setup an abstract Skill system which basically contains the skill effect, a target, the caster, and thats basically it. Also setup an RPG styled combat controller. I use combat states for this (added onto my previous state machine code) When you use tab to select targets and then attempt to use hotkey skill you will auto move within distance of your skill and then you will perform your target and animation. Projectile will move directly towards your targets.

This picture here will depict the state transitions

05f741dd10757d276fad3faaae9c6bff.gif

Magic aoes can basically be handled within the hit state of magic combat. I would create a raycast of a radius of liek 5 or something and then appl effects and or just damage pops on the others

I've been taking the time to rework my entire framework. Originally i did everything basically client sided which i soon realized is a really bad idea. Especially for an MMO. Because if i allow to much control to the client, data can be manipulated. So i've been redesigning my framework to be server authoritative. Its a little more complicated but not to much but basically my client will only request and my server will provide the data. So for example take movement. My client will send w a s d keys and server will read them in with a map meaning u can use wasd all together if u wanted and the server would then take the inputs and peform the data action the client needs to update its actual appeareance... hope this makes sense :)

47e9a82797870fd66641f85898f58c77.gif
even if i change pos on client side my pos will be seen as whats real
to all others including myself
as what server has
meaning no hacks for that. The more server authoritative i make the game the less possible exploits available.

pretty smooth if u ask me :)
back to square 1 hahah

THIS IS FULL SERVER SIDE CONTROL

All the client is doing is 
1 predicting the movement before the network receives so that animations can be smooth as a babys buts over the network without any delay. 
2 playing the animations

d6d7232b0722a7e6fd976f6a0055310e.gif

Sucuess! We have Client sided movement predictions for smooth player synchronization! The entire movement is controlled by the server, and originally i had trouble because there was a delay between the server movement and the network movement but now i have fixed it and everything all smooth :D I plan to now re-import all the previous content i did for client sided control behavior for the server so the server is always in charge of what the client is doing making it really hard to exploit the client for cheats in game.

Just moved back into school so updates may be slower. Dont be alarmed. This project will still proceed. I am submitting this for a Capstone project to complete my Computer Science degree.

I've been working on server side collision and i got a plan ready to be implemented, i've already started creating a scriptable object(had to do research on this since im new to unity) to basically read my scene and export all game objects with a colliders tag and i will be extracting the center collision point and eventually handling collision server sided 😃 that means you wont be able to noclip through things basically possibly floors but i'm going to still test it about a bit...

Basically this will help me create server collision which will go hand in hand with my server side movement. :)

EDIT: 
server now loads up our collider data and creates our collider objects on the server. I already have position and such so now its basically creating an intersect function and when player moves i will just detect for collision before actually updating the player to its real positron

ec943dbcb020ec31d9008194353dd19b.png

Edit:
Here we are :) Full server sided collision..

Notice the jumping around..This is coming because for some reason as i run and when i stop moving on server the run anim seems to put me a little bit more forward leaving me with invalid x and y's. I'll be fixing this later today :). I'll also post a gif of my unity client that way u can see there are no box colliders and capsule collides on my player :)

4c9beb9fcaac809229ca64a0431eec4c.gif


Edit:

Much much better ❤️


c755e7c952dd0dbbb43407de7d7939e4.gif

 

ce5c5d3a12608129beda6a20cfe308a3.png


Moving forward i'm going to work on a better camera controller to work with our new map. Plaans are to basically have camera reposition based on object collision...if that make sense...? I have and idea on what it will look like at the end.

Also start server sided Entity management. This will be server authoritative meaning server will be in control of where the npc is, the direction its walking facing etc. This will also later help me create a server filter system to filter visible game details within a distance to make your performance better :). The game does need a lot of aestheticswork which is why i will never have this game public... I suck with design an aesthetics....We'll see :)

 

Minimal work has been done to the physical appeareance of the game, but i've started working on a server side equipment system to basically equip/unequip items.. (Gotta make the drop models/inventory item image/organize resource items to correlate with server item id inputs) Work on server sided Item definitions to define item properties such as item name,id,slot..etc.. to be sent to client so that it can load up said id from resource when needed. I plan to later just load all resource slots/overlays/inventory images/ data into an list on client startup so i can just use that to load my resources rather than manually do like Resources.load(path/item.data) etc... Plane base skin (starter skin) will look like this (male only atm)

cd224ca99c4de29d18182e3f9414a2c1-png.jpg

And here is an item inventory image for luls 

test.png

You can follow the discord here

 

Please login or register to see this link.

 

Edited by Aki

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×