• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

GAF Indie Game Development Thread 2: High Res Work for Low Res Pay

Status
Not open for further replies.

Minamu

Member
Oh, we had such a blast today while playtesting Holy Sheep, we couldn't contain ourselves xD We've finally added some cool sheep decoys that react to the presence of other players by turning around and running away in fear. Pretty simple but really effective, it's really difficult to tell them apart from a real player if used at the right time. Catching one gives you a fairly hard push back, potentially putting you in a bad spot.

Our Hunter can also do one super jump per kill and one slightly auto-aiming sword throw too, finally giving both "classes" something unique to do. We did maybe 15 1v1v1 matches and we screamed and laughed so much xD I hope we can get a demo build up soon, outside feedback is so essential; you get so blind so fast :/
 
I've got a question for Programmer-GAF (or Designer-GAF, if you kind of do the jack-of-all-trades thing).

I've been working on some AI in Unity lately, and I've come to the conclusion that, as a programmer first-and-foremost, trying to use some kind of visual node-based approach is kind of a drag. I mean, it's not like I can't grasp how to use node-based tools, my issue is that it seemingly takes a lot of time, and a lot of wasted space using 10 or 20+ nodes to accomplish something I could get done in a few lines of code (most likely quicker, as well).

For those of you who have done things one way or the other (pure code, or pure visual tools) which do you prefer? I guess I'm trying to figure out if I should try and stick it out with the node-based approach, or just go back to using H/FSMs in code.

As far as I can see it, things break down like this (in general):

Code
Pros:
Easier to debug (breakpoints!)
Easier to change without re-doing a bunch of nodes
More portable (not tied down to some visual tool)
Performance should be higher, due to less overhead

Cons:

Additional classes/scripts potentially cluttering up the project
Not quite as neat and tidy as having it laid out in a tree
Nowhere near as readable at-a-glance, as there's quite a bit of cross-class referencing

Visual Tools
Pros:
Easier to read at-a-glance
Easier to organize
Easier to use for quick prototypes

Cons:

Basically no decent way to debug (at least not as effectively as breakpoints)
Performance should be worse, due to a higher overhead
Quick changes are more difficult
Locked into a specific system (not very portable)

Any thoughts?
 

Popstar

Member
Pure code. The advantage of visual tools are their approachability, and that is quickly lost once your FSMs start to become more complex.

Maintenance and debugging always become greater priorities at some point in a project. And pure code is better for both. I've seen "easy-to-use" node-based systems become utter nightmares on projects.
 

LordRaptor

Member
I've been working on some AI in Unity lately, and I've come to the conclusion that, as a programmer first-and-foremost, trying to use some kind of visual node-based approach is kind of a drag. I mean, it's not like I can't grasp how to use node-based tools, my issue is that it seemingly takes a lot of time, and a lot of wasted space using 10 or 20+ nodes to accomplish something I could get done in a few lines of code (most likely quicker, as well).

Pretty much everything I've ever tried that's "node based and so much easier" has turned out to be much more complicated and / or time consuming to follow than - even my absolute most awful - code.

I just don't think I'm visually learning based is the conclusion I eventually came to.

e:
I've found a 'block based' AI FSM works quite well, using a descriptive enum as effectively an index of behaviours with each behaviour being self contained, but the work with AI I've done has been very simplistic, so might not work for you
 

Lautaro

Member
For those of you who have done things one way or the other (pure code, or pure visual tools) which do you prefer? I guess I'm trying to figure out if I should try and stick it out with the node-based approach, or just go back to using H/FSMs in code.

I'm also a code-oriented guy so for my first game I simply wrote a finite state machine for the AI. The game was space strategy but all ships had the same basic AI (obey order, stay idle, detect target, follow target, attack target, etc) so I didn't need anything more complex.

I applied the same idea to the tactical AI (basically the AI that would give orders to an enemy fleet) and since this was more complex I started having problems. You say that debugging is easier with code, I think is the opposite: debugging a mildly complex AI with a visual tool is easier because you can see the current status and logic without interrupting the normal flow of the game by using breakpoints. Remember that your AI is gonna be executing for each frame, are you going to be following the code for 60 cycles just to see what the AI does in one second?

My point: it depends of the complexity of your project, a simple idle/chasing/attacking AI can be solved with a pure-code FSM but for something more complex you want to have at least a way to debug it visually. I'm using Unity and for one of my prototypes I made a FSM AI that used Mecanim to help me debug it so you can also use a combination of both.
 
Hi guys, I'm a recent high school graduate and was consdering doing what I believe is the equivalent of a degree in Game Design and Development (I'm based in Spain and I belive this is the equivalent of a minor for US college), and I was wondering what GAF's opinion on the course is.

Is it a viable life decision? Will I be able to find work or establish my own "studio"?

As others have mentioned, work out what area you want to be in. I'll give you my feedback if you are looking to go into designer: your portfio is what matters much more than a degree.

When I was doing hiring for design roles, having a degree in game design/development wasn't something that got you past the first cull - I was looking for what you had actually done. Your group projects during that course were super important for me to be able to get a feeling for you capacities. And even then it was super rare to be hiring people without industry experience (we didn't really have any junior roles looking to get filled, but rather a number of specialist psitions); we did get a couple of interns from such courses (Sweden I believe) and they transitioned into full-time roles, but that is pretty rare and again was based on their portfolio and understanding game design.

For level design positions, it is all about your portfoio and how much you actually understand about level composition and flow. There are lots of games that you can use to show your chops here, so is easier to get into than a more design-focused role (which are very rare).

Good luck to you.
 
How do you guys organize your thoughts/notes/stories?

Any tools you use aside from the game engine/rendering software that you use that helps you be more productive?
 

Lautaro

Member
Made a new article for Beastmancer in case someone wants to check it: http://www.indiedb.com/games/beastmancer/news/june-2016-progress-report



Basically I made a lot of stuff during last month (no wonder I was burned out for a week) like changing the UI, preparing a dungeon and adding an option to choose between male or female character.

2GnjfJ6.jpg

9G6VGi5.jpg
 

Jumplion

Member
Hi guys, I'm a recent high school graduate and was consdering doing what I believe is the equivalent of a degree in Game Design and Development (I'm based in Spain and I belive this is the equivalent of a minor for US college), and I was wondering what GAF's opinion on the course is.

Is it a viable life decision? Will I be able to find work or establish my own "studio"?

I'm a current University student dual majoring Computer Science and Game Design myself.

First rule, do not rest on your laurels. You get out what you put in, and that means focusing on your projects given to you and doing projects outside of classes. Always be doing something on the side, either a group project or a personal project for you to learn something on the side. I've view university as a way for me to connect with other people and give myself a structured environment to build a portfolio in.
 

Noogy

Member
I've got a question for Programmer-GAF (or Designer-GAF, if you kind of do the jack-of-all-trades thing).

I've been working on some AI in Unity lately, and I've come to the conclusion that, as a programmer first-and-foremost, trying to use some kind of visual node-based approach is kind of a drag. I mean, it's not like I can't grasp how to use node-based tools, my issue is that it seemingly takes a lot of time, and a lot of wasted space using 10 or 20+ nodes to accomplish something I could get done in a few lines of code (most likely quicker, as well).

For those of you who have done things one way or the other (pure code, or pure visual tools) which do you prefer? I guess I'm trying to figure out if I should try and stick it out with the node-based approach, or just go back to using H/FSMs in code.

As far as I can see it, things break down like this (in general):

Code
Pros:
Easier to debug (breakpoints!)
Easier to change without re-doing a bunch of nodes
More portable (not tied down to some visual tool)
Performance should be higher, due to less overhead

Cons:

Additional classes/scripts potentially cluttering up the project
Not quite as neat and tidy as having it laid out in a tree
Nowhere near as readable at-a-glance, as there's quite a bit of cross-class referencing

Visual Tools
Pros:
Easier to read at-a-glance
Easier to organize
Easier to use for quick prototypes

Cons:

Basically no decent way to debug (at least not as effectively as breakpoints)
Performance should be worse, due to a higher overhead
Quick changes are more difficult
Locked into a specific system (not very portable)

Any thoughts?

I'm actually using Unity for the first time, having previous experience in XNA. I have to say I enjoyed how quickly I was able to prototype with the GUI, but the deeper I get into production the more I wish I was doing everything purely via code. My main issue is dealing with how Unity manages objects and multithreading, and often times I'm wasting more time figuring out how they do things rather than write it myself.

I absolutely hate debugging in Unity as well. It just seems so tedious, half my variables return null when they aren't, I can't edit while debugging, etc. Debugging with Unity is easily my least favorite part of the process.

There are pros and cons for sure. But if XNA wasn't dead and Unity wasn't so well supported I don't think I'd be using it.
 
Thanks for the insight, everyone!

Pure code. The advantage of visual tools are their approachability, and that is quickly lost once your FSMs start to become more complex.

Maintenance and debugging always become greater priorities at some point in a project. And pure code is better for both. I've seen "easy-to-use" node-based systems become utter nightmares on projects.

That's basically where I'm at. The ease-of-use of a visual layout is great, but I'm wasting more time trying to debug node changes than I would just writing the whole thing in code. And this is with a fairly simple tree of ~4 decisions.

Discriminated unions/pattern matching are the best for finite state machines
You and your F# sugar. :p

Pretty much everything I've ever tried that's "node based and so much easier" has turned out to be much more complicated and / or time consuming to follow than - even my absolute most awful - code.

I just don't think I'm visually learning based is the conclusion I eventually came to.

e:
I've found a 'block based' AI FSM works quite well, using a descriptive enum as effectively an index of behaviours with each behaviour being self contained, but the work with AI I've done has been very simplistic, so might not work for you
I don't know if it's a visual-learning thing, it's just that the node pattern just seems needlessly verbose if you know how to program to a basic extent. I used to use enums as well, but I've recently switched gears to use classes/objects as states. Basically a class encompasses a whole state, so it's easier to keep things simplified, but you gain the benefit of easier readability and extensibility down the line. I'd highly recommend looking into it if you haven't already!

I'm also a code-oriented guy so for my first game I simply wrote a finite state machine for the AI. The game was space strategy but all ships had the same basic AI (obey order, stay idle, detect target, follow target, attack target, etc) so I didn't need anything more complex.

I applied the same idea to the tactical AI (basically the AI that would give orders to an enemy fleet) and since this was more complex I started having problems. You say that debugging is easier with code, I think is the opposite: debugging a mildly complex AI with a visual tool is easier because you can see the current status and logic without interrupting the normal flow of the game by using breakpoints. Remember that your AI is gonna be executing for each frame, are you going to be following the code for 60 cycles just to see what the AI does in one second?

My point: it depends of the complexity of your project, a simple idle/chasing/attacking AI can be solved with a pure-code FSM but for something more complex you want to have at least a way to debug it visually. I'm using Unity and for one of my prototypes I made a FSM AI that used Mecanim to help me debug it so you can also use a combination of both.

I create editor extensions for most of my stuff, so I might actually make some kind of visual debugger if I go for pure code. I'm not against having a way to visually track changes (by the way, I didin't mean I'd use breakpoints quite to the extent you implied, just to debug values like normal). I'm not talking anything hugely complex here -- just some simple enemy AI. Anything that needs semi-realistic "thinking" AI would probably need a Behavior Tree.

I'm actually using Unity for the first time, having previous experience in XNA. I have to say I enjoyed how quickly I was able to prototype with the GUI, but the deeper I get into production the more I wish I was doing everything purely via code. My main issue is dealing with how Unity manages objects and multithreading, and often times I'm wasting more time figuring out how they do things rather than write it myself.

I absolutely hate debugging in Unity as well. It just seems so tedious, half my variables return null when they aren't, I can't edit while debugging, etc. Debugging with Unity is easily my least favorite part of the process.

There are pros and cons for sure. But if XNA wasn't dead and Unity wasn't so well supported I don't think I'd be using it.

I came from XNA, too! I spent three and a half years of highschool teaching myself C# with it, so I know what you mean -- it wasn't perfect but it had a certain je ne sais quois to it. Something only other XNA devs'll get.

On the whole I kind of like Unity, but it's certainly buggy, and I often times find myself having to work around some obscure issue that has, like, 5 results on Google. It's easy, though, to forget that XNA had it's own quirks (and a much worse GC, to boot). I basically just use the editor for the scene designing and the Inspector (setting values, etc.). Everything else I try to keep in code, so I kind of feel you on the debugging front.

-----------------------------

Alright, so it looks like the consensus is to go pure-code (possibly with visual debugging later). I like H/FSMs since they're easy to work with, but they're not very flexible in the same sense that Behavior Trees are. Behavior Trees are a mess to deal with in code, in my opinion, so I'm thinking something like a hierarchical state machine, using the states-as-objects pattern. The only thing that I really like from BTs is the ability to have nodes running in parallel, so I think I might steal that and integrate it so a state machine instance can optionally have its children running in parallel. Since the machines can nest (due to being HFSM) a parent could be single-state, while a child machine is parallel-state, so it actually can work like a top-level BT without the messy inter-node interactions.

Any thoughts on that? Am I crazy for suggesting this kind of HFSM/BT Frankenstein monstrosity? Has anyone done anything like that before?
 

missile

Member
Pad of paper and a pen
Same over here.

Yet I will try a new way. I ordered the 9.7 iPad and will now use the Pencil
to draw my notes and ideas. Most of my scratches done to a paper are of
mathematical nature (derivations, formulas, relations etc.). Usually I have a
block of blank sheets right next to me. But over time I found out that many of
the cool stuff written down gets lost. Or if I wanted to look at a specific
formula again, I wasn't able to find it anymore in the sea of sheets. With the
iPad am going to write on an endless paper which will record all my writings,
marking them in time, being able to scroll back, zoom in and out etc.. That's
at least my idea using it. I wasn't convinced of the 9.7 iPad first. Not only
because of having only 2GB of RAM (I know that 4GB would draw more power, and
with Apple not willing to change form factor or weight to support a bigger
accu, there is no way getting 4GB RAM at the moment at 9.7" from Apple), but
also because I thought the pencil is lagging in hardware. Tried some of the
sketch apps, and the pencil was lagging a bit (which might be ok for drawing)
to a degree where I thought it isn't able to cope with my fast writing of
formulas etc.. But! I tried simple Notes and voilà the pencil becomes pretty
quick up to a speed where it can follow my writings pretty close to realtime.
And that was the key-point for placing the order. So the hardware is fast
enough. What makes the pencil slow in some apps is simply the computational
load of the app in processing the input.

I hope this 9.7 iPad does its job for the money spent (pretty expensive).
Btw; anyone here has some thoughts, know some good apps, etc. to share
for recording notes with a pencil digitally?
 

correojon

Member
How do you guys organize your thoughts/notes/stories?

Any tools you use aside from the game engine/rendering software that you use that helps you be more productive?

I opened a subreddit at the start of development it´s nice to keep track of things. But also pen and paper, though mostly for designs and to get some visual feedback.

I just got back and saw all the responses, they all help a lot, thanks everyone!

Sure! This is the one I'm the most interested in, but there is also one given by the Universidad Complutense
Thanks! Will check it out ;)
 
How do you guys organize your thoughts/notes/stories?

Any tools you use aside from the game engine/rendering software that you use that helps you be more productive?

I use trello a LOT

Mostly for keeping track of what is being worked on, what needs to be done and what is finished etc

Other than that just lots of text drawings and images
 

TheKroge

Neo Member
AYC1mZb.png


Managed to put a new zone into the game to give players more to do, but next up we are throwing around some ideas on how to keep the ship modules unique and interesting.

Right now we are throwing around having special "ship cores" which a player could equip one of at a time, and it doesn't have any effect in itself other than to give various stat upgrades. There are shields, cloaking, various gun turrets, armor, etc, and it could give anything from +% speed, to +% damage, or maybe increased splash damage... really anything. And the more rare ones will give modifiers to all kinds of stats.
 

Sàmban

Banned
Hey GAF! Managed to put in some work on Asideus today. I completed a new enemy type names the assassins. Equipped with either a shotgun or combat knife. Once they see you they will stop at nothing until you are dead. I got to a point where I felt like the gameplay was getting pretty boring because all the enemies so far just try to stay behind cover and shoot at you from a distance. These guys teleport all over the place. Great for getting the player to move.

Here's a video of an AI test for the new enemies. Any feedback is much appreciated!
https://vimeo.com/173558433
 
Spent the weekend polishing , adding procedural music and implementing a skill system.

The skill system is intended to be used alongside the unit placement/movement system .

Resources on the map help determine what units you can build , but a set number of action points per round lets you use 1 or more skills on any given turn.

Initially skills are to alter the landscape which allows land units to traverse parts it couldnt previously, but others will let you boost your resource counts, build forrests to slow down attackers, place boulders to stop units advancing e.t.c

Of course the ai/opponent can also use these same skills to counteract yours. It should hopefully allow more tactical gameplay by letting you alter the landscapes

Decrease a Land Tile

e4Vx6qJ.gif


Increasea Land Tile

IJe9jaP.gif
 

GulAtiCa

Member
Got a new Splashscreen Banner made for another of my upcoming games, Rocket! (I am currently working on 2, and just finished 1. So I've been busy lol).

Cme2dEMWEAA8A-6.jpg:large
 
Holy fuck, the Unity forums changed for the worst. Is hard to read and a mess now.

I tried to read a thread. My face now sports a glorious tan, I don't see colors anymore and my scrolling fingers are swole as fuck.

Some manager must have panicked hard over his deadlines to push this "upgrade" to production.
 

Staccat0

Fail out bailed
Hey all!

I work at a recording studio in Dallas and I've worked on a number of games including Borderlands 2, Battleborn and Orcs Must Die. We also dub shows like DBZ. We've done sound design on a large number of games, commercials and movies as well.

Anyway, we are looking to get into implementation using FMod or Wwise or whatever. I was curious if anyone was looking for some free professional sound work in exchange for a low-pressure project where we can learn the ropes?

PM if you're nasty. Should actually be a great deal.
 

Kyuur

Member
Made a new article for Beastmancer in case someone wants to check it: http://www.indiedb.com/games/beastmancer/news/june-2016-progress-report



Basically I made a lot of stuff during last month (no wonder I was burned out for a week) like changing the UI, preparing a dungeon and adding an option to choose between male or female character.

Wow, I absolutely adore the overall style of this. I can't help but feel the camera might out too much by just a tad, but maybe its adjustable?

Wondering if anyone could pitch in on an issue I'm having with billboards. I'm doing something relatively simple to try and achieve (rotating model matrix to the inverse of my camera's forward direction) but the billboard seems to rotate itself around that direction as well. I'm having a hard time wrapping my head around why this might be. I'm not actually moving my camera, just rotating it around a fixed point that also happens to be the center of my billboard.

Edit: Just realized that the function I'm using to find the rotation between my initial direction and the rotated direction could easily lend to being upside-down compared to camera. I assume that's my problem.
Edit2: Solved; rotated the model matrix by my camera orientation quat!
 
A while ago I posted this concept render for my game's new art style.



Well now that I've been trying to get it up and running in real time, reflections are a pain! I tried screen space reflections, reflection probes, etc. but nothing looked even remotely good in motion. My surfaces are too flat and smooth for traditional video game reflection tricks to work well.

I'm in the middle of building my own solution but hit a roadblock. Basically my approach is to use my flat geometry as an advantage and render an accurate reflection view for each plane. Last night I finished setting up the first part of this where the camera renders a depth+normal texture.


The green and blue channels encode the surface's normal, while the red channel encodes the shortest distance between the camera and the extended surface. End result is that coplanar polygons share the same color.

Next I'd go through this image and get the ~10 most common colors. This is so that I know which reflections are needed in the scene and which are the most prominent. However, I'm stuck at this stage. I expected this to be the simple part yet it's giving me a very hard time.

Does anyone know an efficient way to do this? I could make a script go through pixel by pixel and just count each color's occurrences in an array, but that'd take way too much time to calculate even if I only sampled every 10th pixel. I've been trying to use image effect shaders for this but haven't figured out a way.
 
Holy fuck, the Unity forums changed for the worst. Is hard to read and a mess now.

I tried to read a thread. My face now sports a glorious tan, I don't see colors anymore and my scrolling fingers are swole as fuck.

Some manager must have panicked hard over his deadlines to push this "upgrade" to production.

Heh. Seriously, they're super terrible.

I've got a Gist going where I try and restyle the threads a bit to make them at least slightly readable. A few people are helping out already, but I highly recommend giving the Gist a shot as it makes the forums look somewhat professional.

I'm still hoping for a full rollback, but at least setting up some custom styling makes reading the complaint thread much easier.
 
One day I thought why not make a game, so here I am.

I played with different engines for a week and decided to go with Unity for my 2d platfomer game.

Just finalized main character design, then some quick coding for movement.

 
Has any encountered an error in Unity where a MissingReferenceException will come up describing as that object being destroyed, even though it has DontDestroyOnLoad set and then opening up where it errors it points to a StartCoroutine()?

I can't make heads or tails of it. I double checked in the scene and sure enough the two objects in question were very much there.
 

LordRaptor

Member
Has any encountered an error in Unity where a MissingReferenceException will come up describing as that object being destroyed, even though it has DontDestroyOnLoad set and then opening up where it errors it points to a StartCoroutine()?

I can't make heads or tails of it. I double checked in the scene and sure enough the two objects in question were very much there.

Are you using a static editor reference on an instantiated gameobject?
ie dragging your dontdestroyonload object onto a public variable field in the inspector, then making a prefab?
 
Are you using a static editor reference on an instantiated gameobject?
ie dragging your dontdestroyonload object onto a public variable field in the inspector, then making a prefab?

The two scripts are on two different objects as children to the WorldManager gameobject (so World Manager > Ui Controller -- GameManager).
The GameManager is accessible to everything via instance.
The BattleUI script on the UI controller isn't accessible via anything else than itself.
The world manager class has DontdestroyOnLoad as well as being a singleton.
(I think that covers it haha)
I tested putting DontdestroyonLoad on the two other scripts just to see if the error changed but nothing.

The errors point to the BattleNGUI and GameManager components being destroyed (which still exist when i check the gameobjects) and clicking through the error takes me through to two coroutines in the gamemanager script but there's no componentry to be lost.

I dug a bit further and a bool value "isInBattle" isn't set to true on the second time I enter a battle but I can't see why it's not being set and the code seems to break from there not calling the StartBattle function.

Sorry for the text dump!
 

LordRaptor

Member
Sorry for the text dump!

No worries; what I think might be happening is that static editor references (which I assume you are using for UI) are recreated each time a scene changes or is reloaded; if your UI manager is persistent across loads, even though all of the UI elements it is controlling are named the same in the editor, they are actually entirely new instances, and the stored references it has are for ui elements that are in the scene you just destroyed.

You could probably fix this either by making a method of however you are assigning references, and calling that on 'first run' in your OnAwake(), and also each time you change level (either in your change level script or in the OnLevelLoad() or whatever its called method), or by making a prefab of your UI and instantiating it on level load rather than having it embedded in your scene.

e:
Alternatively, if you want the best of both worlds, where you have a fixed static editor UI with all your references set up, is that you make your UI manager and your UI part of the scene, and just update your pointers to that manager on a scene load / reload.
Keeping that UI across scenes would be as easy as just either making UI manager + Canvas + Events system a prefab and drag and dropping into each new scene, or just deleting everything except your UI + canvas + events manager and saving as a new 'blank' scene to use as a template
 
No worries; what I think might be happening is that static editor references (which I assume you are using for UI) are recreated each time a scene changes or is reloaded; if your UI manager is persistent across loads, even though all of the UI elements it is controlling are named the same in the editor, they are actually entirely new instances, and the stored references it has are for ui elements that are in the scene you just destroyed.

You could probably fix this either by making a method of however you are assigning references, and calling that on 'first run' in your OnAwake(), and also each time you change level (either in your change level script or in the OnLevelLoad() or whatever its called method), or by making a prefab of your UI and instantiating it on level load rather than having it embedded in your scene.

e:
Alternatively, if you want the best of both worlds, where you have a fixed static editor UI with all your references set up, is that you make your UI manager and your UI part of the scene, and just update your pointers to that manager on a scene load / reload.
Keeping that UI across scenes would be as easy as just either making UI manager + Canvas + Events system a prefab and drag and dropping into each new scene, or just deleting everything except your UI + canvas + events manager and saving as a new 'blank' scene to use as a template

That second method might not be a bad idea! I'll try it in the morning and report back how i go
 
Status
Not open for further replies.
Top Bottom