Hot answers tagged

46

I think you will understand their purpose better with a sample. By reading the comments you will understand how VAOs are used. // BEGIN INITIALIZATION // Define some vertex data struct Vertex { GLfloat position[3]; GLfloat texcoord[2]; }; Vertex vertexdata[NUM_VERTS] = { ... }; GLubyte indexdata[NUM_INDICES] = { 0, 1, 2, ... }; // Create and bind a ...


44

If people want to bot, I don't think you can really stop them. You can of course implement many measures that make botting more or less of a pain. But you can only do so much before your codebase turns into a gigantic mess that's hell to maintain, error prone, and annoys legitimate users. Meanwhile the botters will always find a way to defeat your ...


32

I think a lot of the answers miss an important point: you can write apps that access hardware directly, but not on modern operating systems. It's not just a time problem, but a "you don't have a choice" problem. Windows, Linux, OSX, etc. all ban direct hardware access to arbitrary applications. This is important for security reasons: you don't want any ...


26

Practically its necessary, yes. It's necessary because unless you want to spend years writing what is essentially driver code for the multitude of different hardware configurations out there, you need to use an API that unifies against existing drivers written by GPU vendors for all popular operating systems and hardware. The only realistic alternative is ...


24

The best and only effective defense against bots is to design your game in a way that players don't feel the need to automatize in the first place. When your players automatize simple tasks which do not actually require skill, it is a sign that your user interface is lacking and they are substituting an UI feature they are missing. Does your game include ...


22

Don't make your game so vulnerable to johnny-on-the-spot effort First, make sure that players who only play your game for twenty minutes or an hour a day in a single sitting aren't at a huge disadvantage to players who leave it open at work and play 16 hours a day. This may require a change in your game mechanics - for instance a move allotment that fills ...


18

Language: C was predominant, but C++ was around and used. Dev tools: Development environments included those from Borland and Watcom (almost unheard of today) among others. Both Borland and Watcom had their own compilers and their own IDEs. Borland was by far the most popular in general, though Watcom had a reputation for producing faster compiled ...


18

You can absolutely use the GPU to render volumetric data. Since you want to evaluate a set of functions per pixel on the screen, a simple approach is to render a full-screen triangle. This is just a single triangle that covers the entire screen (actually, it covers more than the screen, since the screen isn't triangular, but the parts off-screen are ...


14

Here is a decent writeup about VBOs. Performance Here is a good overview of the calling semantics. Here here is another good overview of performance issues; in it we see that VBOs are more performant than arrays. The reason we prefer VBOs is that the data is loaded onto the card, and so you don't have to transfer it every frame. Depending on the type of ...


13

From the looks of it now each glSet has to include glBind(something) inside of it Not exactly. It's the other way around, as described several paragraphs below. Even if it were true, remember that GL commands from the client app to the GL server (aka driver) have a lot of dispatch overhead compared to a regular function call. Even if we assume that the ...


13

You can't stop them. But you can make their lifes miserable, as they have to spend lots of time writing their bots, and updating them. You have to use whatever you have to verify if user is valid. Check for request headers, and reject requests with invalid values. Either set custom headeror check for existing like user-agent. Sure it's easy to overcome, ...


12

In most cases these problems would fall into the category of "undefined behavior" (not in the C++ sense, but in a more broad understanding). What you'd be doing is essentially circumventing the abstraction provided by MonoGame (as an example, this of course applies to basically any such higher-level API). In doing so, you can cause class invariant ...


11

We have a similar situtation in our project, and we solved the problem by saving components (not functions) to LUA metatables. Basically, when we are creating an entity (or game object as we call them) on LUA side, code looks something like: function createShip() ... self.transform = registerToComponent("transform") self.sprite = ...


10

A good framework - or actually a toolset - is Unity3D. It's somewhat less flexible than "engines" that are focused only on rendering, but then it can save you enormous amounts of time by taking care of a lot of common tasks. You don't have to worry about render, physics, sound, resource importing, terrain engine (if you need one), it has passable GUI system. ...


10

Java is the default language to develop on Android, although you can use NDK (native C) for performance issues on specific parts. But basically, Java + OpenGL is fast enough for most 2D games. One of the best (in my opinion) development environments for Java/Android is Eclipse : you can download plugins for Android from the official website. You have ...


8

(I'm adding this here due to the the fact that ChrisE's answer is highly ambiguous, which is unfortunately due to the ambiguity of the original question. However I'm going to assume the OP's question should have been titled "when to use VAOs and when to use VBOs".) Vertex Buffer Objects (which really aren't dissimilar from other types of Buffer Objects, for ...


8

I'm not a fan of the least-common denominator approach. If you do that, you may end up with crippled features and poor performance. Instead, what I've done in the past, is to provide slightly higher level functionality in a library. That library is (mostly) API agnostic and can be used anywhere, but the implementation of the library is completely different ...


8

In general, distinguishing between bots and humans fully automatically is hard, some form of human-assisted decision process works best. What I would do: define some heuristics that hint the user is probably a bot - doing a lot of actions, doing stuff 24/7, ... Then if these heuristics get over a certain threshold, do an invasive check. You can manually ...


8

Embrace the botter. You've built a restful API, perfect for a coder to experiment with automation of your game. Design your gameplay so that the bot doesn't gain an advantage over a human player due to being automated - eliminate the advantages of speed of execution etc that a machine has; design your game so the bot provides the same revenue as a human ...


8

APIs like OpenGL or DirectX are partialy implemented by the operating system and partially implemented by the graphic driver itself. That means when you would want to create your own low-level API which makes use of the capabilities of modern GPUs, you essentially need to write an own graphic driver. Making sure that your driver works with all common ...


7

I personally would not bother targeting anything below Windows XP. Writing something that works on XP/Vista/7 will get 99% of people on Windows and allow you to use modern technologies. Direct3D is definitely an option, and so is DirectX. Another option is OpenGL. I would personally recommend DirectX 9. There are a lot of great resources and tools that ...


7

All I can say is take a look at Ogre3D. It's written in C++, Open source (MIT License now) and runs on every major platform out of the box. It abstracts out the rendering api and can switch from using DirectX to OpenGL with just a couple of settings. However, I do not know enough about the differences between feature sets of DirectX and OpenGL to say that ...


7

You could try setting up your own server running one of the open-sourced MMO codebases. PlaneShift is one such game, and WorldForge has (last time I looked) several games with simpler rulesets. Ryzom is a formerly closed-source MMO that released both their code and their assets as open source. Setting up your own server from these codebases will probably ...


6

The Android developer site doesn't make it clear anymore that the SDK uses the Java language, but that's the official language. Compiled languages can be used through the Native Development Kit, allowing for languages like C or C++ to be used; however, this is for augmenting Java code rather than replacing it. The supported IDE is Eclipse, and Google ...


6

I'm not sure about OpenGL but DirectX allows you to over write the default left-handedness therefore it wouldn't matter. As you've said, it's "nothing but" a convention, and at least DirectX allows you to work with both. Conventions do not matter by themselves, the only problem is that you need to be consistent with your choice. Mixing two such systems leads ...


6

Ray tracing and other techniques are commonly done with Compute Shaders, which Direct3D has supported since the release of D3D11 and OpenGL has supported since 4.3 (and longer via the use of OpenCL and some contortions).


5

WoW does have an external API with the Armory. It is read only through. Unless you access the pages with a bad browsers, it returns a clear xml structure. According to various blue forums posts, automatic querying of those pages is okay, unless too many requests are sent. The Glider Lawsuit was about a bot that linked to the original game client in memory. ...


5

As Thomas McDonald noted, while your (one) API key is bound to a domain, your requests do actually not need to be made from there. So, no proxy service is necessary. Since I already do have a blog, I registered an API with that site, and now I can happily consume the API without resorting to scraping.


5

This is aimed at the path of Counter Strike more than Second Life, but the game Cube 2 is a fully open source FPS which has been used in lots of research projects that need a fully modifiable multiplayer game. This is the one paper I know of that uses it for its ease to mod. For a more MMO type game, you could always try finding private servers of popular ...


5

The problem is more complex than simply exchanging out EGA for VGA. In fact, the VGA interface is what grew out of the EGA interface, which grew out of the CGA interface, which grew out of the MDA interface, which is why you see the interrupt call schemas as so similar. Basically the idea was "here's interrupt 0x10... and a few simple functions for setting ...



Only top voted, non community-wiki answers of a minimum length are eligible