Game Development should be easier than this

Ok so I come from a background in programming and am a fairly good programmer, but over time I’ve realized my heart is not in the programming side of things, more in the artistic side. I would rather be an artist who can express ideas quickly without having to concern myself with HOW something is made possible. I would like the functionality of the game to work in a very easy, very high level way, without having to think about programming, variables, unity API’s, or having to accommodate the way the lower level wants to work. I would like to stay rooted in the artistic expression without all the gubbins of building the scripts. Every time I realize I will need to write some script to make something happen, my heart sinks and I get frustrated. It is not that I don’t know how to write the script - been there done that - I just don’t enjoy it. It takes so much time and is such a complicated, intellectual process.

So I started to look to higher level tools, and some are better than others, but generally they provide one piece of the puzzle and have to be used with other incompatible pieces, which then need to be glued together with script. I gravitated towards visual programming tools in hopes maybe they help cut out some of the pain. Most of them claim to require no programming, which is BS, because most of them are simply another representation of quite a low-level piece of scripted logic. Having to even deal with variables, function names, and all these other programmery concepts, is just a chore. Most of the visual tools (e.g. on the asset store), including the most popular ones, wrap the basic elements of the Unity API and call it visual, adding perhaps a handful of higher level modular pieces to do very simple things. But even these modules are a bit too low level for what I have in mind.

When I’m designing or in a creative flow, I may just want a door which the player can operate. And so I’d like there to just be a simple door behavior with perhaps a few basic customizations, which you plug some visual asset into and it simply works. You open it, you close it. You don’t ever have to program the dam thing. Or how about an elevator - you just throw an elevator component on an object and perhaps drop a couple of gameobjects onto it for presentation, set a simple speed value or something in a GUI, and hey presto. Or maybe I want an explosion, so I just dump an explosion component on a spritesheet or something and the thing just explodes on command. I’m talking about very very high level artistic choices where I can get the thing to WORK in a matter of seconds, without having to program or even know anything about programming. I mean, games have enough elements in common, you’d think this should be a lot easier than having to build a graph or hook up nodes or write several lines of script (or more) just to get some basic stuff to happen.

So anyway, I guess I’m just complaining, but I’d really like to see some library of game elements or components which operate basic common game stuff, without having to script or code or drag lines between stupid boxes. I know playmaker has actions similar to some other tools, and that those actions are a step toward this (simple gui with easy controls to slightly customize the action)… but they are still too low level in a lot of cases. I don’t want actions like set variable, tween integer or whatever, I want an action like make the door work, teleporter, pile of boulders that falls when you get close, power up that appears when nearby, or whatever… Just really simple game elements.

I guess I probably will have to go ahead and buy PlayMaker because it seems to be the easiest system out there at the moment. But I really wish there was a much simpler NO PROGRAMMING WHATSOEVER higher level system - not just for beginners, but just to make my life easier and development quicker. I don’t care about being a programmer snob who simply insists on having to do something in code, just because they can. Programming is a pain.

I just got done playing Portal 2… it has a pretty simple level editor for custom levels… simple building blocks… you add a teleporter, you add a switch, you add a door, you hook up the door to the switch, bla bla bla… very quick and easy. Not that I want to get into modding or making levels for existing games, I want to realize my own visions of a game but make it function with the least effort.

2 Likes

Wow man. And here I am on the opposite extreme. I just want to get out of the Unity Editor as fast as I can and get to making the game. Just knocking out code. Unity is already quite visually / artist oriented I think. It surely doesn’t seem programmer oriented at least not compared to anything I have used before. In fact it took some effort just to get into a pure programmer mode workflow.

You may want to ask some of these people who are knocking out games saying it is their first game ever… how they are doing it. Every week some beginner developer with no previous experience releases a game and announces it on the Showcase. Usually several in fact. Maybe they have found some way to get rid of most of the programming? Or maybe they are super fast learners? Can’t hurt to ask.

2 Likes

there is playmaker which apparently make the programming side much simpler.
I haven’t tried the tool myself but I see it has quite a lot of positive reviews.

Should making game be simpler though. I don’t think it should because we’ve seen an affluent of wannabe game maker that release games barely made in a few hours that just isn’t worth the money.

Strangely the easier it is to make a game, the lower quality the games released are, though there are exceptions.

Also having the ability to code ourselves means we can make tools or shaders that don’t exist.

1 Like

I think what you need is ‘a programmer who works for you.’

Take the door example. You want a generic door building-block, right? So here’s some questions I need to consider if I’m going to create a generic door building-block:

  • Should it be possible to lock the door?
  • Should the door respond to a force exerted on it, or should you have to explicitly interact with it to make it open/close? Or should it open automatically when the player approaches?
  • What should it do when something is in the way of the door’s movement?
  • Can the door be blown off its hinges?
  • What if the door isn’t just a simple swing-on-a-hinge affair but has a complex locking/unlocking mechanism?
  • Can AI characters open and close the door?
  • Can the door be opened/closed from scripts?
  • Does whether the door is open or closed need to be recorded into saved games?
  • Is a door always vertical?
  • If the door can be locked, is it locked/unlocked by the player, or by NPCs, or by script? How are keys paired to doors?
  • How should characters treat the door if it is half-open?
  • How should scripts treat the door if it is half-open?
  • How should the door be loaded/saved when it is in a half-open state?
  • If the door is physics-driven, should its angular velocity be included in saved games?

I guarantee you that whatever the answers are for your game, they’ll be different for somebody else’s. So the generic building block suddenly needs to support multiple answers to all these questions. And before long you’re back at something which is just as complex - if not more complex - than programming.

Portal 2 has a simple level editor because the designers told the programmers what high-level concepts they needed and the programmers implemented that, filling in the ‘detail’ where they weren’t given it. And they gave the result to the designers, who asked them for changes, and so on, until they arrived at a set of entities which made it easy to build Portal 2. Those same entities don’t make it easy to build Gears of War, or Rollercoaster Tycoon, or Skyrim, or Cut the Rope.

You want to be scripting, I think, not programming. And that’s fine, but one cannot script until one has the system-level features in place that the script is going to control. Someone’s got to build those systems.

15 Likes

I let this feeling stop me for a long time from doing anything with Unity. I see games and they all seem to have the same stuff, so it makes sense that the same stuff should be 99% already programmed and waiting for me to use it. Like the poster before be wrote, though, there’s too many possibilities. The ability to imagine something and the ability to make it happen are vastly different, and what separates them are the details… programming deals with the details. So you really hate thinking about the details.

It sounds to me that you’re approaching your game in an un-planned and un-focused way. You’re developing your game and designing stuff in Unity, then you realize you need something so everything grinds to a halt until you can finish programming it. Then you continue designing, then you find you need something else and everything grinds to a halt again, and so on…
Well don’t do that! It’s slow, frustrating, and inefficient. Figure out all the components you need, and make a list of them. That’s what a Game Design Document is for. You shouldn’t be suddenly realizing you need to program something, that should have already been figured out ahead of time. Program all the things in the GDD, do nothing but programming those things, forget about everything else. When you’re done, you have your high level system. Now you can switch hats and be a high-level designer. Minimize the number of times you have to switch between designer mode and programmer mode.

Otherwise you’re not using Unity properly. Specifically, you aren’t properly leveraging the Unity prefab and component system. That system exists specifically to make it easy for developers to create their own high level systems within the framework that is Unity. Program a door the way you want it once and save it as a prefab. Now drag/drop into scene whenever you need it–doesn’t get much more high level than that.
In other words, develop a subengine for Unity–a library of commonly used objects and tools you can use to build your games however you want.

Game programming is easier than it ever has been, thanks to tools like unity. So easy that hundreds of games are released a day.

7 Likes

As superpig showcases so well then there is really no way to make a high level system to fit all games. Too many options.

But as Jingle Fett says, it is all about designing the system properly from the get go so you don’t have to switch role all the time. I have for example created a component based system for one of my games weapon system. Each component work on its own and are not dependent on the others (only on one super component). We have around 30 components for the system now. We have not needed to add more code to the system for months because its so easy for the designers to just drag components on to a weapon, set the variables and then test new weapons. Saves so much time in the end with such systems.

All good and valid points, I appreciate the feedback. Yes game programming is MUCH easier thanks to Unity, compared to having to write all kinds of systems and engine parts in previous languages. But that doesn’t mean it is as easy as it could be.

I do like the idea of hiring a person to do the programming… in the USA what is involved in that, do you need to get an accountant involved to create a contract or fill out certain tax forms etc? I am an LLC business already but have never hired anyone.

Regarding higher level tools equating to lack of flexibility, this is a common perception but it’s not true. You can still yield quite a lot of versatility from a high-level interface which can hide a lot of programming. Obviously you won’t get the same flexibility as raw programming but maybe you can sacrifice a bit of control to make things less painful?

I understand about prefabs and re-using of components etc.

You do have a point on the GDD… I have not made one, partly because it seems to suck the life out of enjoying it. Once the GDD is ready, it seems then all that’s left is work? And programming. And more programming. I do not want to program. That’s what my entire post is about.

Anyway. I went ahead and bought Playmaker. I know it will not provide the high level that I want but it should at least save some time.

Doesn’t anyone see the merit in my suggestion, which is that you can very quickly get basic functionality working without having to do any programming/scripting? I know you can set up those components/prefabs yourself, but you still have to set them up in the first place. Would be great not to have to. I guess I’m looking for a totally WYSIWYG kind of tool, game editor, and less of a development platform?

Ummm…

Make up your mind? :stuck_out_tongue:

I also disagree with the title. “Should”? Why should it be easier? I understand why you would want it to be, but why should it?

And in any case, coding isn’t even the hard part. It’s stumbling upon weird behaviours and finding bugs and having to do workarounds. For example, I spent a lot time learning about tangent space bases that different programs use, that I wish I had spent on something else and it’s all because engines and 3d programs can’t agree on one way to calculate tangents.

1 Like

If you’re going to bring them on as an employee then yeah you probably need to talk to your accountant. If you’re just going to hire them as a contractor then I think it’s simpler - just one business buying a service from another. IANAL, IANAA, etc…

Yeah but that’s always the tradeoff, and you sacrifice more and more flexibility the higher you go. Consider that you’re talking about building a layer on top of Unity; but Unity already has a ravening horde of requests for more extension points, more features, more things being exposed, and so on. We abstract the really low-level details away - you think you hate programming now, imagine how much you’d hate it if you had to parse FBX files yourself or write hundreds of lines of Direct3D initialization code just to get a blank screen - but in doing so we do make certain assumptions and those assumptions turn out not to hold for everyone.

I absolutely see the merit of it; I just think it’s a very difficult thing to achieve, because blending ease-of-use with power and flexibility is a hard problem requiring a ton of creativity, and you can’t just sit down and ‘make it happen.’ Again, consider Unity itself as an example; compared to the tools that came before it, it has insane levels of both ease-of-use and power, but that wasn’t because Joachim just drank a ton of Red Bull. It’s more about the specific ideas and creative decisions taken in its design - the decision to be tool-focused, the decision to use a component-based approach, and so on.

I’d say every non-trivial game project should be looking to build itself on top of a ‘WYSIWYG game editor’ of sorts; the issue is just that you usually have to build the game editor yourself as well. But maybe that’s where hiring somebody else to help you would pay off.

2 Likes

I got playmaker recently just so I can use custom actions I’ve written myself but organize them visually when I’m feeling lazy / artsy. It’s like making a static utility class that you keep in every project. It also makes animation with timing / cutscenes a dream. As someone with a programmer background who bought it, I can say it’s definitely worth it even if it’s no longer on sale.

I don’t think it gets easier than playmaker. @imaginaryhuman_1 after you get into it, it’s pretty much exactly what you described in the last few bits of your post. It has enough in it to get pretty far in a project without touching any code, but when you do decide to code your own actions you can put them in your playmaker actions folder and move them between projects.

Although to clarify - you can put those actions where ever you want. They’ll show up in the play maker action browser as long as they have the right namespace and extend FsmStateAction. If I made a really project specific custom action, I’ll keep a custom actions folder in that project’s resources folder.

1 Like

My main problem is thinking so far outside the box that off-the-shelf tools (even Unity itself) can’t do what I need it to without resorting to custom programming. I can’t get into a make something that Unity is good at mindset. I can only come up with this would be awesome, if it were possible. So it’s partly that Unity isn’t the right tool for the job, but in comparison to other tools, it’s still the best option.

I did just buy playmaker but I’m already finding that what I want to do can’t be done with it. So now I’m going to have to drudge through documentation and learn api nonsense and exactly how specifically to write a ‘custom action’ in order to patch it to do what I need it to. So then that becomes annoying, and I might as well have written normal code in the first place. Any of the visions that I have of what would make a really awesome, work of art game, end up being almost impossible to implement without just doing a tonne of coding. There are also performance issues with Unity when you try to step outside ‘what its designed for’… like how to have a few hundred rigid bodies working at a smooth framerate on an 5th generation iPad, which I’ve found is impossible, so now I’m going to have to hack together my own movement system as well just to get it to run smoothly.

Maybe you should just do modding.

1 Like

The system I would like to have is one where I can think of any kind of object or scene I want, enter it into a text box, style it, click generate and presto instant graphics.

Basically in the text box I might type [tree] and then in a dropdown I select 2D Sideview Realistic (not to be confused with photorealistic or photograph) and then I enter 128 x 256 as the dimensions. Click GENERATE and presto I see a tree. Hmm. Wrong color. I need to add that to the criteria. Click. No. Click. Hmm. Click. Not bad!

We all have our dreams.

2 Likes

This has been done before in Enterprise Resource Planning (ERP) software. These system rarely require programming. Just tons and tons of configuration. So instead of a programmer you’ll get yourself a consultant in a suit who charges a king’s ransom because he or she knows which switches to flip and which tables to fill.

If you want to have less programming then you’ll either have to live with less flexibility or accept more complexity in configuring whatever pre-built components you’ll be using. Add enough complexity to the components and programming will quickly become a lot more attractive.

2 Likes

Playmaker is easy to learn and all, but I’m pretty skeptical on how good - or profitable - of a game can be made with it without writing any code at all. I think Universe is probably a much more powerful similar plugin that doesn’t get its due. Playmaker performance also doesn’t seem to be very good if you have a lot of FSM’s in a Scene. I personally only use it for cut scene type stuff where it seems to excel. For enemy AI, RAIN and Behavior Designer seem to be much faster to me.

Now having said that, you can get TONS of built in behavior without writing any code from our two plugins: Core GameKit and Master Audio. They work in conjunction with Playmaker if you like, but you don’t necessarily need it. These assets were created with non-coders in mind.

Also, if you want much easier game making, you could always switch to Game Salad or something. That does of course limit you to less possibilities, but it’s pretty fast.

1 Like

Hmm, if your ideas are so far out of the box, how could anyone designing a generic system on top of Unity anticipate them anyway?

Maybe shell out 20$ for UE4 and see how Blueprints fare for you?

4 Likes

I’m amazed that Unity have not made steps to create something like Blueprints or asked the community for what Game Widgets they need above the standard ones.

Or could they analyse data from the millions of developers that use Unity and map out what are the most common things they make. I often find myself writing or cutting and pasting the same or very similar code from project to project.

Or what if along with Prefabs Unity has a prefab library system where you could store and retrieve often used components/gadgets and share/sell/trade gadgets you have made. I know there is the asset store but that’s a bit ‘clunky’ and does not match the concept of a Library system where you can store your own commonly used prefabs and code between projects.

But if they added a cloud storage or local storage feature to the asset store then people could store their own, share and sell assets.

I also think that coding in Unity could be made easier, they could integrate a code editor, provide an extensible code templates system or snippets for commonly used code. e.g.

Create C# code → Default: Update, Start
→ OnCollision: OnCollisionEnter(), OnCollisionStay(), OnCollisionExit()
→ OnTrigger: Ditto

Then developers could build up their own or again share code templates for commonly used tasks.

In theory if Unity could harness the data from it’s community it could build up a whole toolset of components, templates, frameworks and features that would make working with Unity faster, simpler and smarter.

I would love to be able to drag and drop a code widget into a Unity scene and for it to generate a game object, create adding any requires components and then have a code interface view of objects in the scene and be able to link up the relevant ones using a ui node based system. Ideally one where if I click on an object and and select link To objects that don’t have a matching interface element fade back.

But a Blueprints style UI that would actually generate code and be generated from code would be an amazing tool, and combined with a library system where people can share/rate/buy/trade/sell widgets and code I think it would really turn Unity into a best of breed game development platform.

Oh yeah and frameworks or templates, yes games change and each one is different but if Unity included frameworks and/or templates so people could start out with a platforming/FPS/RTS/Runner/ that could be selected from the beginning think of the time people would save.

In effect a template/framework would just be a minimalist art version of their best tutorials games.

Also frameworks could exist in the library and be changed adapted and improved, bought, traded and sold.

And they could use challenges with prizes so the community build and rate the best templates/widgets and frameworks!

Dang that’s a 100 chapter book haha