This is tough love from me, but personally I think Drag&Drop programming is pretty fundamentally a bad thing.

I know some people use Drag&Drop programming to quickly create prototypes, and for others it was their first introduction into game development (me included!). But I feel people are taking it too far, insisting that it’s a legitimate career path within game development.

There is a very real ceiling for how much you can grow within such an environment, you’ll always be trapped in the role of “noob game developer hobbyist”. The “real world” of game development, from indie underdog hits, big AAA titles, to kickstarter crowd-funded games, will all be dismissing you once they realize you can’t code. Knowing how to code is not an optional skill for game development.

Just think about it for a moment. Imagine authors writing books by using a drag&drop interface to grab pictures onto a timeline, insisting that you don’t need to learn how to write to be an author. We would all instantly and rightfully laugh them out of the public square.

Drag&Drop programing suffers some pretty severe restrictions, and often rely on real programmers who know how to code having laid the groundwork for them, as they can’t really implement path-finding, procedural generation, separation of engine and content. While people who learn how to code keep increasing in knowledge and understanding, often learning alternative programming languages, people who stay with the Drag&Drop interface just tends to get very specialized knowledge about how to do things in that particular program. Their skills aren’t transferable outside of that context.

David, you are mixing together the Unity plugin and the Unity development environment. It’s true that some big names are using Unity, but they aren’t using the plugin. Hearthstone, for instance, is made in Unity but only as a standalone application.

There is nothing wrong with making standalone applications with various engines and frameworks. Some use Unity, some use C++ and Lua, some use Python, etc.

The issue lies with the Unity plugin, for the reasons that have been repeated earlier in this thread. As you even point out, there is work towards a HTML5 port, which is great, because it moves away from the Unity plugin.

Originally posted by DavidGameDev:Either accept that Unity is here to stay, or go ahead and miss on some of the best games being created.

Or you know, just be one of the unlucky (me included) who can’t get the Unity plugin to work on our computers, because the Unity team didn’t bother. You can’t frame this as a acceptance thing when I literately cannot play Unity plugin games on my computer.

When he says “the problem with this logic” he is referring to my post which promoted JavaScript, saying it cannot compete with Flash because it’s a memory hog (which is completely untrue, while Java can be very heavy on the memory, JavaScript is not, but it’s pretty obvious that he is just repeating things he have heard but don’t understand). Calling Unity garbage is unrelated to that, he just squeezed it in.

note that for this post I am strictly speaking of Unity as a webplugin. I know you can have standalone games that doesn’t require the user to install the plugin, which isn’t that different from just making a regular standalone game. I have no beef with that

A lot of people in this thread seems to be missing the advantages of open standards over proprietary binary blobs. If you make something in Unity for the web, your content will run on whatever devices that the Unity team decides should be graced by their plugin. Run an outdated operating system? or something that isn’t Windows? Well, the Unity team might help you with that, or they might not, it’s out of your hands. With a open standard that nobody owns (and can abuse for profit), stuff like that won’t happen. Anybody could create a browser with JS, WebGL and make it work on a XP, heck, even a windows 95 machine if you’d like. And in fifty years when Windows 20 comes out, your content can still be enjoyed because it’s based on that open standard, it doesn’t depend on a cooperation deciding it’s profitable to create their plugin for that operating system (if they exist at all so far in the future). Heck, they might even sue you if you try to do it for them, or hack your way around what restrictions they have.

In short, you don’t want vendor lock-in. It’s bad, m’kay?

The fact that there is such a thing as paying for Unity to unlock all “features” especially worries me. Want to use more than five local vars in a function? No worries, just sign up for our premium developer plan. Is that really the sort of future we should be sailing towards, with copyrighted proprietary plugins, development environments that have tier costs plans (and locked features if you don’t pay up), and no control over our games after they are made?

If Unity is bought, or close shop tomorrow, what then? What if a security hole if found in the Unity player and they aren’t around to patch it?

There are lots of great free resources on the web on how to do these things. I’ve personally learned to use WebGL with nothing but google searches. You don’t need to spend £14 to get it in book format.

(This is your first post, and you come here to advertise your book? That’s very spammy)

You’ll have more luck asking in the collaborations forum, but be aware that most people aren’t to hot on programming somebody elses game (especially AS2). You’ll have a better shot at making the game by learning how to program yourself.

Amibtious is correct, blitting is the way to go. When you use Sprites and MovieClips you give up power and flexibility in favor of convenience, and you will eventually run into things you cannot fix because you don’t have control.

Personally I dislike Unity because the whole idea is a move in the wrong direction.

While it’s true that you have to install Flash, this is fundamentally a bad thing and should be recognized as such. It is only “accepted” for legacy reasons (there is so much flash content online now, and it came about because other means like HTML where really lacking back in the ol’ days). The web should fundamentally be made up of HTML, CSS and JavaScript, and not binary blobs swf files that you need closed source binary blog players to view.

When Unity comes onto the stage and says “hey we wanna introduce another binary blob format with our own closed source binary blob player” they deserve all the flack they are getting, because that’s the very last thing in the world the web needs right now.

Do you have any suggestions for avoid duplicate vertex stream? because it seems like to me that I have to upload x y velocity and time (5 * 4 bytes) every vertex (unless I’m drawing points) with increases the amount of data I need to push by quite a lot.

I’m entirely sure I understand what you mean by duplicate vertex stream.

I would really recommend points for a particle system rather than triangles, it’s just a much better fit. You can even use textures on points, so as long as your particles don’t need to do absolutely crazy stuff you shouldn’t need anything more than points.

Aside from that, how do other people write their applications so that it runs at speeds like 500 fps :/? Feels like on C++ the draw calls are not as much bottlenecks as on stage3d.

Just double checking, you are drawing all your particles with a singular drawing call right?

You should avoid updating the particle with the CPU in the first place.

Rather, give the particles x, y, velocity, and creationTime attributes, and then have a global currentTime value that the CPU sets every frame.

The GPU can then use (currentTime-creationTime)*velocity to recalculate each particle’s moved position from the original x, y. Note that the GPU doesn’t alter the x, y attributes of the particles each run, it simply uses the time difference to figure out how far the particle will have moved. The CPU only needs to work when you creating a new particle, not every single frame to modify the particle position.

Not only does this free the CPU from this cumbersome work (instead letting the awesome parallel might of the GPU do all the heavy lifting), it also helps you avoid bussing masses of data to the GPU every frame.

Do you use some sort of framework or library? What exactly do you mean by “sprite sheets”? HTML5 doesn’t have spritesheets natively, so we can’t really help you unless you are describing what you are using and how it went wrong.

Yes but, the first lacks one kind of position, and the second lacks the other kind of position. So the neutral state needs to be position-less (as opposed to hard-coding the position component into the entity class itself).

Either way, I sometimes find myself using entities for non-game-object things, such as a sort of AI mind, with components being various goals, desires and modificatiors. Such an entity doesn’t need a position component.

As for what entity doesn’t have a position, it depends. Say that your game has an overview chess board style view, but also an arena fight-to-the-death view. In such a game, the chess piece entities would want to have a grid based position, and would require a component to do this properly, while the arena entities would want a regular world coordinate postion, and would require a separate component to do that properly.

Of course, you could probably shoehorn both kinds of functionality into a single component with dual use, but other situations can arise (what if the area entities can jump, requiring a z-coordinate?) where you are better off separating the components.

Hey, do you like games? So do we — that’s what makes Kongregate the best source of free games online. We have thousands upon thousands of free online games, from both one-man indies and large studios, rated and filtered so you can play the best of the best. Read more »