Jump to content
  • Advertisement

flodihn

Member
  • Content count

    289
  • Joined

  • Last visited

Community Reputation

290 Neutral

About flodihn

  • Rank
    Member

Social

  • Github
    https://github.com/flodihn

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. flodihn

    What does MMORPG require?

    I want to chip in saying that there are some MMOs created by a very small indie team at low or no budget. I think Wurm/Vendetta Online was only two or three guys.
  2. Another viable option some PC games do is updating using a p2p (peer to peer) protocol, however, you must probably have a server up that is online 24/7 to seed your updates since you can not trust clients will always be online. Downloading updates from dropbox would in theory probably work, but as far as I know, their protocol is closed to if you need to do something special, you are probably out of luck. I am not sure what would happen if thousands of people started to download rather large files from your dropbox account, maybe you should read their terms of agreement and see if you can find that they reserve the right to shut your account down if some bandwidth limitation is reached. An alternative to dropbox is Mega, which I think might not even require an account to upload files: https://mega.nz/
  3. If you are serious (enough) the "best" or should I say most common way to download an update is using a REST API. For example, you can run a small web server on a VPS (virtual private server) hosted by some web hosting company, and write your own API that implements urls like this. Your game client could then query the rest api to check if new versions of the game is available and get a response containing a download url. REQUEST: GET http://mygame.myserver.com/api/versions?only_latest=true RESPONSE { "version": "1.3", "download_url:" "http://mygame.myserver.com/api/versions/1.3/package.bin" } REQUEST GET http://mygame.myserver.com/api/versions/1.3/package.bin RESPONSE binary_data... Then you could have an admin interface which allows you to create new versions POST http://mygame.myserver.com/api/versions/1.4 POST_DATA { "package": "C:\MyGame\package.bin" }
  4. flodihn

    Short Intro and Game Summary

    Looking good, the only issue I see is the lack of music, I think it is very important for an action game like this, you can probably find some free to use tracks to put in your game legally.
  5. flodihn

    Thoughts on 3d Characters/Problems with hands

    I think you need to practice box modelling, also lookup how to control hard and soft edges.
  6. flodihn

    Character Concept

    Overall your style is very good. The only thing I notice is that her short legs makes her look a bit like a dwarf, maybe that is intentional.
  7. I been using this for a bunch of projects, it has never failed me. public static class StateMachine { public static IModel model; public static IView view; public static IController controller; private static GameState currentGameState; public static void Setup(IModel _model, IView _view, IController _controller) { model = _model; view = _view; controller = _controller; } public static void SwitchState(GameState newState) { if(currentGameState != null) { currentGameState.OnExit(); } currentGameState = newState; currentGameState.Initialize(model, view, controller); currentGameState.OnEnter(); } } And then you have an abtract game state you inherit from: public class GameState { protected IModel model; protected View.IView view; protected IController controller; public void Initialize(IModel model, IView view, IController controller) { this.model = model; this.view = view; this.controller = controller; } public virtual void OnEnter() { } public virtual void OnExit() { } public virtual void Update() { } } Then you can make a class for each of your game states that inherits from GameState and use it like this: StateMachine.SwitchState(new LoadMissionGameState()); You can of course skip the IModel, IView and IController parts if you do not use them.
  8. I am not 100% sure, but I think that if you do not define an Update or LateUpdate function in the script, Unity will not call (even a virtual) update function. If this is the case, you can have hundred of thousands small scripts attached everywhere in your scene, it will only cost you memory. As soon as you add an Update function, well that is when things will slow down to a crawl. For most games, this will not be an issue, imagine a game where you never have more than 20 or 50 enemies at a given time, the performance of those enemies will most likely not cause any trouble. I would advice to do some research on the subject because right now, you are making a decision without any empirical data. So I think you should create roughly the number of game objects you expect to have in your scene at once, then add roughly the number of scipts you think you will have and run the profiler or just check the "FPS" counter and see how well it runs, then add more objects until your system drops below a tolerable FPS rate, which is usually lower then 60 or maybe 30, depending on your game. If you choose to do this, please report back to this thread with the result, I think it would interest many people.
  9. I have created a bunch of game clients and quite recently reworked a sub engine in Unity to use for my current and future games. No matter how large or small the game was, I never had the need for a singleton or any type of "manager" class. Because when you think of it, a Singleton anywhere does not make any sense, the idea of creating classes or structs with the new keyword is to instansiate one or possible more of the same object, and if you by a singleton forces this instancing mechanism to just instance an object once, you could just write a static class instead. For example, I have a ThreadScheduler in my engine that creates N-1 threads per CPU core and allows my logic to schedule job tasks. Instead of having a singleton I just have a static ThreadScheduler class. Actually, when thinking of it, JobScheduler might be a better name for the task, since that name is a more accurate description of its responsbility. As already stated by others, I would avoid creating a multitude of singleston classes that reference each other, it would lead to a tangly mess of coupled code that would be hard to read, debug and refactor. One way to avoid such manager classes is to have solid well thought out high level software architecture, maybe look up this https://en.wikipedia.org/wiki/Multitier_architecture and this https://en.wikipedia.org/wiki/Model–view–controller.
  10. flodihn

    Generate unique ID per user

    For a mobile game i have been involved in, we used a server generated UUID and the mobiles unique device id to identify a user, then if they put in their email, later on which was optional, we could restore their account in case they reinstalled the app or changed their phone.
  11. Unity3D has by far the largest community and asset store (maybe Unreal is a rival here). You should be able to use the free version to make the game, the only big downside with the free version is that you have to show a Unity Splash screen before your game starts. Unreal in general has better graphics, free access to source and a much better license, but these things will probably affect you much.
  12. flodihn

    Logic in ECS?

    Through experience, I found it quite nice when I treat my game objects as pure persistent data classes that has one or multiple pieces of logic attached to them. So for example, if you have a player, the player has some data. { "image": "Resources/Sprites/Player.png", "position": {"x": 0, "y": 32, "z": 23}, "hp": 100, "mana": 250, "animation": "walking", "collider": {"shape": "box", "size": 1} } Then you could attached the logic scrips "PlayerController", "Animator" and "Animal" attached to it. The PlayerController would probably be responsible for moving around the player when certains keys are pressed. The Animator logic could pick up on the movement or other actions and play proper animations. Then the Animal logic could provide functionality to add/remove hitpoints and mana, and dying etc.
  13. Well, premature optimization is the root of all evil but... Imagine you have a map och 1000x1000 tiles, each tiles stores a number of objects. If you have a bullet of whatever, traversing from tile to tile, you can avoid Unity's default collision detection triggers in favor of just doing manual collision detection tests on all objects in its own tile. Also, for background tiles, if you just have all quads that are marked as static meshes, you will most likely not have a problem "rendering" thousands of them, actually, just placing a camera pointing down on the tiles will most likely just render a few all tiles assuming Unity has some sort of quad tree of whatever, this should be working without you having to do anything. If you have one or mayle multiple Monobehaviours attach to each tile, having a couple of thousands of them might be laggy, specially mobiles, but I do not see the reason why each tile would needs its own logic and its own update function.
  14. The server usually have states machine where it places the client in depending on what is going on. When a client connects to a server, usually a persistent TCP socket is created that is kept open until the client closes or timeouts, the socket is kept open even when there is no data exchanged. The server now have a few states the socket can be in (Not that this is just an example I am pulling out of my ass, but many MMO/multiplayer games have something like this): 1. Unauthorized -> Server requires the client to send username/password to go to the next state 2. Lobby -> The client has successfully sent username and password to the server, and the server found a username/password match, for the remainder of the session, the server knows who the client it. In this state the server waits for the client to pick an avatar (if available= and request to start playing. 3 -> Playing -> The client has selected an avatar (if available) and the server has started a playing session with that avatar. In any of these states, the client (or server for that matter) can choose to shut down the session in which the client has start over, there are ways of recovering/reconnecting players currently in a game session during if that is a desirable behaviour.
  15. I have heard some people use Photon Engine: https://www.photonengine.com/en/OnPremise. Maybe it is what you are looking for. I also know the UnityPark SDK, I suspect that only works if you are using Unity3D. http://developer.muchdifferent.com/unitypark/
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!