Jump to content
  • Advertisement

TheChubu

Member
  • Content count

    2106
  • Joined

  • Last visited

Community Reputation

9480 Excellent

About TheChubu

  • Rank
    Contributor

Personal Information

  • Role
    Programmer
  • Interests
    Programming

Recent Profile Visitors

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

  1. In my 1/5 done UI system, the player entity is the only one with inputs and input mappings. Those mappings handle a key button press, that can grab it's owner entity, check if it has the ui view it wants to show (because the ui view group is another component), and display it. The ui view, depending on what it does, can fetch components from its owner entity (say, like the inventory component) and do its magic. All inside the ECS, no concept of "player" needed for that. In any case, you can just have a tagging system. Entities can have Tag components, and the system keeps a tag -> entity map around. You can request the tagging system for a specific entity that way (this can work for other use cases, like say, tagging enemies, or movable objects, or quest items, or whatever).
  2. Well sometimes... in my dreams.
  3. TheChubu

    Career advice

    Is that a degree? How far are you into that degree? Usually the recommendation if you want to be a programmer is to do a Computer Science degree, then specialize in whatever you want. And I think you understand now why that is.
  4. TheChubu

    Problems of designing a story driven game

    I'd suggest you play Tyranny, from Obsidian Entertainment (Star Wars Knights of the Old Republic 2, Fallout New Vegas, Pillars of Eternity, South Park The Stick of Truth, etc). I'm not even a big fan of the genre (never played Baldur's Gate and friends), but Obsidian's games always entertain me with their writing quality. I think Tyranny is an excellent example of what you can do about choices. Roughly you have 4 main paths: Side with one general, side with the other, rebel and side with the locals, or fuck everyone up and kill everybody that stands in your path (perfectly valid path!). The game is around 30h of gameplay, which is considered "short" given other examples of the genre (Pillars of Eternity, from the same company, is roughly 100h long). Then again, to experience it completely you **have** to play it 4 times. I consider that style of game as a heavy contrast of say, Bethesda games. If you grab Skyrim for instance, if your character only knows how to swing a sword, you can still join the assassin's guild, the thieves guild and the mage guild, with some very low effort on your part. You can become the Dragonborn Archmage that can only do a simple ball of fire spell. There is a very valid reason for that: All of those guilds are content that was made for the game, which isn't cheap, and they're not going to let something silly as "character choices" prevent the player from experiencing all there is to the game. If players don't experience that content, then the money and time spent on it was wasted from the developer's perspective. In Tyranny there are things you simply cant do depending on the choices you make. You can't save the Vellum Citadel if you side with Ashe, you cant convince Bleden Mark to join you if you sided with any general or rebel, you cant convince Ashe to join you if you didn't side with him, etc. And these are very cool characters that have lots of cool dialogue if you side with them and talk to them. That's content the player may or may not experience depending on the choices they make. Say, to even side with the rebels you have to make some obviously stupid choices (given the in-universe circumstances) in the first act, even your companions argue with you about them because they make no sense. Many people in the forums asked how to even go the rebel path because they didnt know, and the answers were met with "huh, never tried doing that!" reactions. That is fucking cool from a story perspective. There are a lot of "mary sue" type of games where if your character is "good enough" (ie, meets some requirements like having enough of a particular skill), you can save everyone and make everyone happy. I believe games like Mass Effect, at least the first Dragon Age and Bethesda's RPGs are guilty of this. That isn't the case in Tyranny, and that is why I think it is a good example of how far you can go with multiple branching paths. I'd make the case that The Witcher games are like that in some aspects, not so much main story wise but per character choices are pretty varied, and they make a point of this "You cant make everyone happy" thing I've mentioned. Often making the obviously good choice leads to unexpected results, even in very minor things that dont even amount to quests. For instance, start of the game, you find a doctor that is taking care of a very sick woman, she wont make it. You can offer the doctor a Witcher concoction that might help her, but that could have seriously side effects. If you dont help her, the woman dies. If you do, later in the game you find the woman's lover, and he tells you that she recovered, but the concoction destroyed her mind, she is insane, and the woman's lover wonders whether it was the right choice to try to help her or if it would have been better to let life run its course. I wouldn't even call that a "quest", it's more of a particular interaction you can have, and again, this is all optional content that the player might never experience. That interaction was scripted by someone, multiple voice actors were paid to voice those lines, at least one level designer had to go there and place the shack, with the doctor and the woman, and the woman's lover in the army. The player might just miss the shack when walking around and never experience that content, the player might do one path in one playthough and never experience the other one. Such is the price for having choice. In short, I think that to have choice is to give something up. If you don't give something up by choosing to do something in your game, then it isn't a choice, it's more of a preference.
  5. TheChubu

    Good Java engines

    Eh, there is only JMonkeyEngine. That's probably the only engine made in Java that looks like an engine. Everything else is just frameworks, like libGDX, or low level barebone libraries like LWJGL. There not much else to pick from really.
  6. TheChubu

    Data Driven Item component system?

    If you want, you can check out my ECS 'framework' https://github.com/dustContributor/dustArtemis/tree/entity-filter ('master' branch is kinda out of date, ought to merge 'entity-filter' some day...) In my ECS, entities are just integer ids, "steps" in the simulation can process entities that match certain component signatures (via entity filters), and components are just attached or de-attached as you please, the framework can re-filter the entities that changed and pass them to the interested steps. That way you avoid long chains of "if(entity.hasComponent(Health.class) && entity.hasComponent(Enemy.class))" and so on. It doesn't incorporates a way to serialize stuff, that's on the user's shoulders (specially since no one has a definitive idea on how to serialize game data, depends on the game).
  7. TheChubu

    Vulkan on MacOS

    This is quite cool. Hopefully will make Feral's job easier with their ports.
  8. TheChubu

    Game I'm making is not fun

    Killing things doesnt seems fun in that video. I'd add flashy things. Like kill combo messages, or powerups for killing X amount of zombies in less than Y amount of time. With a sort of deep narrator voice and a flashy message on the screen. The combo thing is something you can keep track off. How many x5 kill combos, x10, x25, x50, and some absurd x100 combo. Also the countdown for the next wave? That also could be narrated with some screen feedback like "THREE! TWO! ONE!" That kind of thing. Zombies dropping stuff like coins or something to buy better gear. You know, things to keep the intensity going, to keep the player running and killing stuff. Look at this, it might give you some ideas:
  9. Geezus dude just make a new account and move on. That's how Reddit works and it's one of the things they do to keep one of the biggest internet communities in the planet going. End of the story.
  10. AFAIK engines dont pay that much attention to editor's performance. Runtime performance (as in for the end-user) on the other hand is a big problem. For the editor they just throw hardware at it, since it's cheaper to buy beefy workstations than to dedicate months of man-hours to tune everything. Somewhere in this talk this stuff is talked about, cant recall exactly when, might give you some pointers:
  11. TheChubu

    Basic C# quiz

    Are these candidates expected to know C#? Is this a position that requires some experience in C#? Otherwise some of the questions simply cant be answered by someone who knows other languages but not C#, like the IEnumerable's Count one, or the one with a generic and abstract class.
  12. TheChubu

    So I made a styling language for OpenGL Apps

    To be fair the situation of UI libs for Java that can be used in games is pretty annoying right now. You have stuff like TWL, which sounds cool and all but it has its own renderer, based on GL 1.1 of all things, and you'd have to code one for it if you ever want to use it on say, a core GL context or Vulkan. Of course, if you use core GL or Vulkan, it is going to be a total pain because the whole lib has the ideas of vertex3f, color3f and friends very ingrained in it, which doesn't maps at all to a modern solution. There is NiftyGUI, which is, again, pretty cool and all but again, it insists on rendering itself, which causes problems integrating it into an existing pipeline, since all state tracking you make goes out of the window when you pass the wheel to NiftyGUI. On the good side, it does has a core GL backend. But as you can see the whole concept of "UI rendering itself" is not good. You have various backends in NiftyGUI: Compat ones, core ones, LWJGL ones, JOGL ones, etc. And thats the rendering part, there is also input handling, which it is also a pain to incorporate into an existing pipeline (and IIRC it tries to do sound too, it's big and messy). LWJGL did, in my opinion, the most sane thing and incorporated bindings for Nuklear, which it can be quite a pain in the ass since it is an immediate UI lib (which gets pretty annoying when doing more complex UIs) and the only documentation is in the source code, and it flat out stops after you scrolled through 1/4 of it. On the other hand, the big, big plus of Nuklear is that it knows jack shit of what you're running on. You can use GL, Vulkan, D3D, some abstraction layer like GLFW or SDL for input, or just polling win32 events, it doesn't matters. It provides a tiny API in which you pass input events to it, and it generates memory chunks with vertices to draw for you, that you send to your rendering pipeline however and whenever you want. Integration becomes **super** easy this way. You can draw right away immediate style, or VAO/VBO core style, or deffer for later, or whatever. Your call. So in my opinion, if you offer something that can be easily integrated like Nuklear, and and the same time being easier to use (since it'd be entirely Java side), you could have an audience for this stuff. EDIT: As a side note, using any of the standard libs like Swing or JavaFX with a GL app is also a pain in the butt because the implementations usually depend on big ass non portable hacks to make it work, like the render target hijacking method in JavaFX, or the mandatory compat profile GLCanvas for SWT. And performance just plain sucks in these cases.
  13. TheChubu

    C++ Random number issue

    I'm guessing what you want is this: static std::uniform_int_distribution<int> u(1, 6); // Seed the engine only *once* static std::default_random_engine e(time(0)); int roll = (u(e)); return roll; ie, you want to initialize the engine with a seed **once**. And let it generate random values from there. Might be wrong syntax for that though, I don't know if std::default_random_engine has a constructor where you can pass it a seed value. Someone with more C++ experience can tell you how to do that properly. EDIT: Nvm, it's fine. The seed in that case will be the current time of the system. So it should vary enough across playthroughs to be useful. If you take out the seed, what happens is that the generator gets initialized with a default seed every single time, and these random number generators are deterministic. ie, if you seed it with the same number, they'll produce the same sequence of values. That's pretty useful because it allows you to reproduce them if you keep around the seed that originated them.
  14. TheChubu

    Need guidance for first game

    In my not-so-experienced-in-finishing-2d-game-projects opinion, Unreal Engine is overkill for what you're doing. Game Maker Studio 2 sounds like a good idea. You could try out free/open source 2D game engines before though: Godot Engine https://godotengine.org/ Torque2D https://www.garagegames.com/products/torque-2d CoronaSDK https://coronalabs.com/ Cocos2D-x http://www.cocos2d-x.org/
  • 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!