Jump to content
  • Advertisement


GDNet Emeritus
  • Content Count

  • Joined

  • Last visited

  • Days Won


jpetrie last won the day on March 13 2018

jpetrie had the most liked content!

Community Reputation

13212 Excellent

About jpetrie

  • Rank

Personal Information

  • Website
  • Role
  • Interests

Recent Profile Visitors

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

  1. jpetrie

    Dog Star Software

    Dog Star Software provides consulting and contract programming services to independent game developers. We have over a decade of professional game development experience on projects of all sizes. Whether you need that last bit of engineering work to get your project over the finish line, or some assistance with early prototype development, we can help. We evaluate all projects on a case-by-case basis. Email us at hello@dogstarsoftware.com and let's talk.
  2. By requiring it, the standard is ensuring that C# can be compiled to an intermediate representation any conforming CLI implementation can run, and also that it can inter-operate easily with other such languages (VB.NET, for example). This ability to inter-operate was a key design goal of the platform at the time; supporting it eases adoption and thus increases how quickly the ecosystem will spread. I encourage you to read some of those linked standards (the introduction material in particular). They're considerably easier to digest than, say, the C++ standard.
  3. Types like System.Float and System.Boolean come from the CTS (Common Type System), part of the CLI (Common Language Infrastructure) standard. This standard is defined in ECMA-335. They have nothing, per se, to do with C#. C# is a language generally built on top of the CLI specification; it's standard (defined in ECMA-334) requires that a certain minimal subset of CLI be exposed through. That includes exposing the CTS types. The language then provides the common C-like aliases "bool" and "float" and such for aesthetics or convenience.
  4. jpetrie

    Contract Work

    This makes more sense, then. I do agree that it's possible to live in Seattle on less than $100k. But it's becoming harder and harder to do so. Especially when you have a family, as swiftcoder's pointing out. I didn't start my career on $100k, no. But I also lived in the cheap suburbs of Baltimore when I started, and that was more than a decade ago. I have no idea what Seattle was like back then.
  5. jpetrie

    Contract Work

    I'm not sure what the argument you're trying to make with that link is? I'll guess that it is that highly-paid senior engineers in Seattle aren't making six figure salaries... but I don't think it supports that at all: - The data is from 2014, so it's a few years out of date and in particular isn't going to be reflective of the alarming growth in housing cost in the area in the last two or three years. The median house price in Seattle is nearly $800k. Employers need to consider that when deciding compensation, because employees need to be able to live in the area and that means needing to be able to afford a mortgage (or rent, which is pressured upwards by rising house prices as well). - The data is for the zip codes covering the city of Seattle itself (it was commissioned as background for the discussion about whether or not a high-earner tax should be put in place). It thus does not reflect the non-trivial percentage of engineers (and folks in other jobs) who live outside the city and commute in via the areas overburdened and struggling public transit system). Microsoft, in particular, is not in Seattle itself (primarily). Median prices outside the city are actually even higher; in Bellevue they were up above $2m. - The data is covering everybody who lives in the city. That includes students, retirees, and people in jobs that aren't highly-paid tech sector jobs. I'd expect it to be the case that most people in the area don't have high-paid senior-level software engineering positions, so this data isn't surprising (in that respect, at least). If I've misunderstood your point, I apologize, but it's not clear to me what you were going for since you just pasted the link.
  6. jpetrie

    A Few Farewells

    A lot of what you've said here echoes some of my own feelings; I hope you find some good places to land! Best of luck.
  7. jpetrie


    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!
  8. 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.
  9. 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).
  10. 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.
  11. As I said, I am not interested in an attempt to re-hash the debate.
  12. 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.
  13. 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.
  14. 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.
  • Advertisement

Important Information

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

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!