jpetrie

GDNet Emeritus
  • Content count

    8378
  • Joined

  • Last visited

  • Days Won

    5

jpetrie last won the day on October 14

jpetrie had the most liked content!

Community Reputation

13199 Excellent

About jpetrie

  • Rank
    Contributor

Personal Information

  1. Goodbye!

    I have been a moderator here for about a decade. GDNet is a great community, and being part of the moderation team has been a wonderful experience. But today is, more or less, my last day as a part of that team. As it does when one gets older, life has increasingly intruded on the time I'd normally spend here. Fortunately all those intrusions have been (and continue to be) good things, but just the same I don't feel like I have the time to really do the job justice, and so I am stepping down. One of the remaining moderators will take over the forum in my place, although I don't know who that will be yet. Although it's very likely I'll be much less active for the next few months, I am probably not going away forever, and can be reached via private message on the site if needed. Thanks for everything, it's been great!
  2. Every iteration of your rendering loop is called a "frame." Every frame you draw the complete scene from scratch, starting by clearing the old frame by using glClear. You need to do this because normally you'll have drawn a bunch of other stuff -- sprites, meshes, text, etc -- to the screen during the last frame. You want to draw those things in their new positions this frame, and you'll want to clear the drawing you did of them in their old positions last frame. Also under the hood, most of the time, the actual method of presenting your back buffer to the screen involves swapping it with another one or otherwise moving the memory around or discarding it so you're not actually drawing into the same region of memory between two successful frames. You may have two buffers - a front and a back buffer - that are swapped between, for example. Which is probably what caused the artifacting you saw: you only cleared one buffer, the second had garbage in it.
  3. Looks like you only call glClear once during startup. You need to call it every frame (so it probably needs to be inside your while loop, at the top; I'm not overly familiar with GLFW).
  4. People usually reverse-engineer the protocols and data involved to do this, which is a legal grey area in some jurisdictions and a terrible model to build a business on. If they legally obtained the required files/data/protocol/license/etc from Trion Worlds, they would not be "unofficial" servers.
  5. As I said, I am not interested in an attempt to re-hash the debate.
  6. Only if you make it hard; the mechanism to do this is to zero them in the constructor or (better) in the constructor's initialization list. If you try to avoid using that mechanism on principle, then yes, it will be difficult. In modern-enough C++ you can initialize some members inline in the class declaration, but that's effectively just a syntactic difference. The actual initialization still happens at the same effective place in time. The other alternative is to avoid using constructs (like unions) which affect the triviality or layout of the type, allowing you to continue to use zero initialization.
  7. The reason you were banned was that you were: Pursuing an avenue of argument based on repeatedly asserting facts without providing backup or justification, and responding in a belittling fashion when asked to provide those facts (or simply ignoring those requests); this is not arguing in good faith, and is not appropriately respectful of the other members of this community. Taking overtly racist positions in your arguments. I should not have to explain that racism is not something we tolerate here. Yes, the last straw was your extremely childish, rude attempt to spam the channel with a link to a website about global IQ averages. This would not be enough to ban you on its own, but in along with the above? Yes, you were banned. Your ban will not be permanent, it will be revoked in ~8 hours or so (since we can't make bans expire automatically in Discord). We're not going to bring the argument itself into this thread. I will not lock it (yet), but I will instead issue a warning to everybody that any attempts to engage in, or to continue, the actual substance of the argument (basically anything the original post's third or forth paragraph) will be removed.
  8. You're already doing that (without using the "technically faster" initialization lists, either) in various places in this code, though. You're also going to have to do that in some cases in C++. They'll be called if they exist (including if they were generated defaults). The error is telling you that one of the default constructors (for Input) was deleted. It was deleted because the presence of the union in the type means it cannot be generated. You'll have to provide an explicit default constructor for any of these types that have unions in them, as you did with the vector type (which, incidentally, used in the fashion you're implying technically involves undefined behavior -- but does generally work the way you are expecting on all major compilers). You're not going to be able to program modern C++ with all the syntactic equivalencies of C you'd like because they are quite different languages in areas where they seem syntactically the same. Initialization is one of those.
  9. 2D RPG Development (Sword of Mana)

    Pick a language; I'd suggest C# or Python. Search the internet for "learning C#" or "learning Python" tutorials or whatnot. Follow them, practice building simple programs like a guess-the-number game, blackjack or hangman style game using the basic (usually text-based) IO available.
  10. 2D RPG Development (Sword of Mana)

    No. This requires you to first invent the universe. It's practically-speaking impossible to make something "from scratch." You're going to be using a computer somebody else built. You're going to be using a compiler somebody else built. And you're going to be using APIs somebody else built. So the real question is when you say "from scratch," how much do you mean? If you mean not using tools like Game Maker, then absolutely there are tutorials for the whole host of various and sundry specific topics you will need to build a game (you do not need to build "an engine," that's not a requirement to have a game and building one well, for real, requires having built a bunch of games before, unless you want to delude yourself). Doing this is significantly more work, of course, especially if you have no skill at game programming. You'll be spending some non-trivial amount of time learning to program and writing basic text-based programs before you even get to learning how to put a window on the screen and draw graphics into it. But is certainly a path open to you, if developing that skill is more important to you than finishing your game. Good, because you'll actually, practically speaking, make less money this way. Mostly due to the opportunity cost if nothing else.
  11. 2D RPG Development (Sword of Mana)

    Technically speaking, Sword of Mana and similar games are quite straightforward. That doesn't mean they'll be trivial to make, though. You should first get started with making even simpler games like Pong or whatever. The blog Alpha_ProgDes linked above is a good starting point. Game Maker is a good tool to consider using as well. Making top-down 2D games is well within its wheelhouse. The most important thing for you to do is practice: practice making simple games, building to more complex ones, and eventually to your 2D RPG. The same goes with art: if you're not going to try to find somebody to work with to create art, you're going to have to make it yourself, and that means spending time practicing it until you feel comfortable with your ability to produce the quality level you want for this game of yours. Fortunately, the "pixel art" aesthetic of games like Sword of Mana is super popular right now, and it's fairly easy to find large lists of tutorials and guides just by poking around Google.
  12. Hello From a New Member!

    There are, on the other hand, several reasons you'd want to start a company before having a finished game to sell, such as having a distinct legal entity to hold the IP and sublicense it, or to arrange collaboration agreements under, et cetera. Sure, it sets you out some (generally small, though that varies with your location) amount of cash. But it's not a bad idea, as long as the ongoing maintenance thereof isn't costly (in the US, for example, it generally is not until you are actually making money - just some routine paperwork).
  13. SFML How are Symbols Loaded?

    It does. You need the .pdb files for the SFML binaries you are using. You either need to get them from the same place you got the binaries, or you need to recompile SFML yourself in order to generate them. Those sound like the .pdbs generated for your code. They will not help you with SFML. A PDB file should have a .pdb extension. That doesn't look like it's actually a PDB file. It also has to match the binary of the SFML library; you can't neccessarily just grab some other random SFML .pdb, say, from a game that uses SFML and shipped it for some reason, and drop it in to your project. They won't match. Get the PDBs from the source you got the SFML library from. If they aren't supplied, build the library yourself.
  14. Again Inclusion question

    Also, since this is diverging quickly into two different subjects, I suggest you make a new topic if you'd like further discussion on your larger texture/object/level lifetime management issues. Or come ask about it in the Discord server. I'd like to keep threads reasonably scoped to their original concerns.