DIR Return Create A Forum - Home
---------------------------------------------------------
Sheep Tag Community
HTML https://sheeptag.createaforum.com
---------------------------------------------------------
*****************************************************
DIR Return to: Community Discussion
*****************************************************
#Post#: 5998--------------------------------------------------
Sheep Tag Remake - Technical Discussion
DIR By: XXXandBEER
Date: February 27, 2017, 4:40 pm
---------------------------------------------------------
Let's talk about geek stuff here! Chakra has already asked some
great questions.
What's it written in?
Unity and C#
What platforms will it support?
Priority: PC
Secondary: OSx and Linux
It's made in Unity so it can ideally go anywhere.
How does path finding work?
As of now it is being handled through Unity's NavMesh system.
I'm open to alternatives if someone (chakra) thinks they can
make something better :)
What kind of content creation will there be?
Terrain Editor where players can upload custom maps.
Developer API for tools, apps, and websites using player and
game data.
If you have anything to contribute design wise please do so!
#Post#: 6002--------------------------------------------------
Re: Sheep Tag Remake - Technical Discussion
DIR By: Chakra
Date: February 27, 2017, 6:00 pm
---------------------------------------------------------
Woo, the important bits!
Path finding
I would stick to using Unity's NavMesh. It's top-notch. A
navmesh actually allows free-form pathfinding, unlike WC3's
grid-based system. This means it'd 100% support buildings that
aren't fixed to a grid. I'd advise against this for Sheep Tag,
though, lol. NavMeshes are slower at grid-based movement, but as
long as they have space-local optimizations it shouldn't hit any
problems for a game the scale of Sheep Tag (or even a hundred
times larger).
Networking
Networking is a VERY big thing to think about because it
stretches from the very low-level to the very high-level. At the
low-level you have considerations of where entities are and what
they are doing. In the middle-level you have player
actions/events. At the high-level you have game state logic
(such as start playing, cancel, modes, etc). I am entirely in
the dark on how Unity's base networking system works.
Here are some major considerations on a networking architecture:
- Is networking event-driven or poll-driven? It's somewhat a
spectrum. A pure event-driven system would mean ONLY
player-events are broadcaster across the network. Theoretically
every client should be able to run the exact same game (or
replay) with just events. A poll-driven system would include
constantly updating state. An event-driven system is generally
easier on traffic but there is a lot more work in making sure
everything stays in sync. A poll-driven system really sucks with
long latency/bad internet (ever play a game where your units
constantly jitter?).
- Is there a server? Mostly a dumb question in today's world.
Generally the answer is yes. The alternative is clients directly
communicating with each other. Either you'd need port forwarding
or a STUN-type model, which is never fun.
- Is the server an authority and how much authority does it
have? Basically, can we trust what the server tells us? For an
entirely event-driven networking system the point is moot.
- Does the server have memory? This is slightly related to the
next consideration, but is also somewhat independent. If
networking is event based, new clients could theoretically catch
up from the events alone (a lot easier if you also have
"key-frames").
- Is the server dumb or smart? A smart server essentially runs
the game itself while a dumb server is simply a relay to other
players. A dumb server mostly only works if it's event-based due
to the issue of trust. But even an event-based system could
benefit from a smart server. A smart server, for example, can
relay "pseudo" events/state and thus hide things from specific
players (GOODBYE MAPHACKERS).
- Is there prediction? Prediction can drastically lower the
appearance of latency, especially if players/servers cheat a
little (i.e., player orders a unit to move and if no events had
occurred in the previous n milliseconds, record the event of
taking place a tiny bit in the past). The trade-offs are
generally entirely in the pro column beyond just the work to do
it. WC3 has no prediction while every modern FPS does.
Content Creation
So game-logic is going to be hard-coded? A lot easier, of
course, but limiting. :P Custom terrains are pretty easy to get
working, however. A custom terrain simply stores heights,
cliffs, tiles, and objects.
#Post#: 6006--------------------------------------------------
Re: Sheep Tag Remake - Technical Discussion
DIR By: XXXandBEER
Date: February 28, 2017, 11:30 am
---------------------------------------------------------
Networking
You sound pretty knowledgeable in this field. There's no doubt
I'll probably come to you at some point in the future!
SheepyTaggerNep was working on his own Sheep Tag, and got
networking done through the free Photon Networking add-on. I'd
like to use the new Unity 5 networking multiplayer system UNet
it supports quite a bit of quality stuff, and is compatible with
every platform.
HTML https://docs.unity3d.com/Manual/UNetOverview.html
Yes, there will be a server.
Smart server sounds better.
Prediction sounds like a thing I'm going to want.
Content Creation
Out of curiosity what would you like to see moddable?
Legion TD 2 has a cool system where they provide some custom
triggers, and have integrated the Apex Editor.
For custom games I was going to give the ability to edit Unit
Stats, Starting gold, Timers, that sort of thing. There's not
much Physics in the game if any, just collisions, so I don't see
why you wouldn't be able to disable colliders on certain objects
if I add it as a 'stat'. Pathfinding will most likely be
hard-coded, if I use the NavMesh system (I don't have much
control over that). Really most of this stuff is easy to change,
but for the core game I want it to be Sheep Tag. I mentioned in
another thread the ability to easily make map variants like
Bulldog, and CTF.
#Post#: 6010--------------------------------------------------
Re: Sheep Tag Remake - Technical Discussion
DIR By: Chakra
Date: February 28, 2017, 11:04 pm
---------------------------------------------------------
Networking
UNET looks good. Are you using any physics? That'd complicate
matters a lot as physics are generally not deterministic
(Unity's is not); there are ways to get around it, just involves
some safe desyncing. WC3 has no physics. You could also,
possibly implement your own deterministic physics engine, but
they are hard.
Content Creation
Ideally I'd love everything to be modifiable. :P That of course
necessitates open source on the client end. Short of that,
moving the game logic into the mod, like what WC3 does, gives a
lot of power. This basically means the core classes, like
entities, pathfinding, movement, networking etc., are protected
but anything that controls the real "flow" of it is not. WC3
actually kind of did it hacky and basically hardcoded melee and
put in a trigger that says "I'm melee!"
#Post#: 6023--------------------------------------------------
Re: Sheep Tag Remake - Technical Discussion
DIR By: XXXandBEER
Date: March 2, 2017, 2:50 pm
---------------------------------------------------------
Everything will mostly be handled with raycasts. I'm going to
try an avoid using Unity Rigidbodies.
For content creation I'm going to make the base necessities of
what makes a Sheep Tag game, and then make as much of that stuff
accessible as I can. However, Sheep Tag is the focus here :)
and honestly if you want complete control we can do it through
Unity. I'd be willing to put the core of the game on the asset
store as a package, and then I could hypothetically implement a
way for people to save out their creation as a playable custom
mod in Sheep Tag 2, and upload it.
I did have a question relating to how I should handle the
client? Should this be an all-inclusive game where the client
has lobbies, chat, adding friends all built directly into the
game. Or should it be more LoL style where the client is
separate from the game. Also, this is something I could use a
lot of help on. I'm confident I can make the game playable, but
allowing users to interact with one another is a whole different
mess I've not yet dealt with. However, I am quite familiar with
RESTful APIs and that sort of programming.
*****************************************************
Page 1 of 1