• 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.

Ventron

Member
Hmm, so are you continually using reflection to sync the values..? That sounds very bad for performance.

I thought so too, but by caching a lot of the reflection information (like FieldInfo) at the start, it's working really well so far.

I don't have a lot of objects that I need to sync, but I might try looking into different approaches. Reflection was just the first thing that came to mind to solve my specific use case, since I don't have to do any work at all to make a new object type sync-able.


EDIT: Regarding Unity networking, can't believe I missed the RPCMode.All flag, which was exactly what I wanted *slaps self*
 

Roubjon

Member
I started getting serious with Unity yesterday and downloaded Unity 5 and started some 2D tutorials and holy shit at how much easier everything is to manage and how everything is structured.

After using the ImpactJS engine for a year, it's like I'm working in a magical fantasy world where things are organized, nice, and everything is done for you. I haven't had this much fun coding in a while.
 

ZServ

Member
This is from a small "time travel" level section:
RPG5s.jpg

lol @ Trials reference.

So, now we've got UE4, Unity 5, and Source 2 available for everyone. Hopefully we'll start seeing a lot more newcomers soon :)
 
It's still uploading so as of posting this, the link probably won't work for the next ten minutes or so, but for anyone interested I'm uploading a video of the WIP level 8 with commentary on the concepts and puzzles. Obviously this 'spoils' the puzzle solutions, and I don't expect many people to actually watch all of this (at 15 minutes or so in length), but putting up proof of continual progress on the game really helps keep me motivated.

The very last puzzle with the pushable blocks is the puzzle that's taken me essentially three days, but it's working almost 100% of the way I want it to now (with one minor problem that I can hopefully fix, but that isn't game breaking enough for me not to move on with the next puzzle tomorrow). It feels like a real piece of actual regular gameplay, with one Primitive esque wrinkle. It turned out better than expected, put it that way, unlike the gear puzzle before it (which I might drop entirely if I can't figure out how to prevent the player easily getting chewed up between the spokes).

http://youtu.be/bHDcF5z7yRo

For your gear puzzle,
could you make the red gear also have openings like the blue one? That'd stop the chewing. Then a different solution would be needed, since with both gears like that it'd be trivial.

You could set it up so that two opposite cavities on the blue gear connect through the center. Then instead of riding around the gear to get to the other room, the player would run through the gear to get to the other room.

Maybe at least this'll get you thinking of alternative ways to fix the gears.
 

Lautaro

Member
Ugh, I receive so many messages from composers, I feel bad ignoring them or having to tell them that I'm not looking for a composer (I barely have money and I don't like the idea of making revenue share promises).

I imagine I'm not the only one, how do you deal with that?
 
Ugh, I receive so many messages from composers, I feel bad ignoring them or having to tell them that I'm not looking for a composer (I barely have money and I don't like the idea of making revenue share promises).

I imagine I'm not the only one, how do you deal with that?

We've gotten quite a few too. We ignore them at first and tell them that we already have a composer if they persist.
 

Limanima

Member
International GAF, I need help translating a few text lines for my game Snails.
The game is going to be released soon on Steam.
This is the game in question:

Snails

I need help translating to german, italian, french and spanish.
This are the texts that require translation. This are small hint messages to be displayed in the loading screen.

You can speed up the game by pressing the fast forward button (or space key).
To gain a better time bonus, escort the necessary snails and then go for the coins.
Coins are optional. You don't need them to finish the levels.
Sometimes you don't need all snails to finish a level.
If you find a level too hard, try levels from other themes.
Can't get a gold medal? Try other levels and come back later.
Drop the objects on the floor, snails will pick them up and use it.
When a snail hits the border of the map, they will turn back.
To get a gold medal you'll need: all snails and medals in the best possible time.
Gold medal requirements for the level are displayed in the pause menu.

You can PM me if you are interested. Sorry, but I have no $ to pay for this job, so you will have to do it for free. :(
Edit: but your name will appear on the game credits. You can then brag that your name appears on a Steam game!

Thanks!
 

scaffa

Member
Ugh, I receive so many messages from composers, I feel bad ignoring them or having to tell them that I'm not looking for a composer (I barely have money and I don't like the idea of making revenue share promises).

I imagine I'm not the only one, how do you deal with that?

Depends if they show real interest and if they include a link to Bandcamp or to Soundcloud then I mostly listen a bit to their stuff. See if I like it and if it fits with the game i'm making. If it fits I tell them I'm not looking for a composer at the moment but that they should contact me later or add me on twitter or something, also when I think the music would fit with possible future projects.

Sometimes the mail is pretty generic for example saying the game looks cool but not even mentioning the name or something specific that they like. I ignore those since I always get that mass copy paste feeling then :) There should be atleast some interest and enthousiasm. Otherwise I get the feeling it's not even going to work out on a creative level.
 

Limanima

Member
Not that I can translate for you, but you should offer a translation credit in your game for those that offer to help.

Yes, I can do that.
In fact I already have the names for the people who helped translate the whole game. This are just some hint messages I decided to add.
 

Kritz

Banned
I thought so too, but by caching a lot of the reflection information (like FieldInfo) at the start, it's working really well so far.

I don't have a lot of objects that I need to sync, but I might try looking into different approaches. Reflection was just the first thing that came to mind to solve my specific use case, since I don't have to do any work at all to make a new object type sync-able.


EDIT: Regarding Unity networking, can't believe I missed the RPCMode.All flag, which was exactly what I wanted *slaps self*

one small tip that took me forever to work out for unity multiplayer:

never use Network.Instantiate. It's a buffered call that you can never get rid of. Even if you do a Network.Destroy - the instantiation call will persist when new clients join, but the network.destroy will not.

Every time you spawn a new object via code, I've found the best results is to do something like the following:

Code:
box
{
    public GameObject boxPrefab;

    void Update()
    {
        if(Network.isServer)
        {
            if(Time.time>100)
            {
                networkView.RPC("Destroy", RPCMode.All, this.networkView.networkViewID);
            }
        }
    }

    public void Spawn(Vector3 pos)
    {
        if(Network.isServer)
        {
            NetworkViewID newID = NetworkView.AllocateID();
            // any other server only config goes here

            networkView.RPC("SpawnBox", RPCMode.All, pos, newID);
        }
    }

    [RPC]
    void SpawnBox(Vector3 pos, NetworkViewID newViewID)
    {
        GameObject newBox = GameObject.Instantiate(boxPrefab, pos, rot, whatevs) as GameObject;
        newBox.networkView.networkViewID = newViewID;
    }

    [RPC]
    void Destroy(targetNetworkViewID)
    {
        GameObject target = NetworkView.Find(targetNetworkViewID).gameObject;
        GameObject.Destroy(target);
    }

    /*
    This is only run on the Server, and it is run each time a player connects.
    The logic behind this is that, if this box object exists on the server,
    then it must exist. So create this object on the new client.
    */
    OnPlayerConnect(NetworkPlayer player)
    {
        // I forget if you can RPC players directly, but if you can't there's a similar call somewhere
        networkView.RPC("SpawnBox", player, this.transform.position, this.networkView.networkViewID);
    }
}

In short,

the publicly accessible spawn function is what you call to spawn objects. It deals with making sure everyone ends up with the same networkID.

the RPC spawn function creates a gameobject locally for everyone but sets the object to have the same viewID.

The onPlayerConnect will create objects that already exist on the new client

The destroy will destroy the object on all clients who are currently connected (including the server).

So if you have one box, and run the Spawn() twice, you create two boxes on all current players. A new player joins, there are three boxes to run OnPlayerConnect, they all create copies on the new player. The server Destroys one box, so all currently connected players have that box be destroyed. A new player joins, this time there are only two boxes alive, so the server creates copies of those two boxes on the new player.

Which may sound like the most simple thing in the world, or the stupidest. But I never found any of this documented anywhere, so I just continually had pains with new players being able to see phantom objects that weren't destroyed by Network.Destroy or RemoveAllRPCs or whatever.

Finally, you have to treat objects that were initialised in the scene differently (as opposed to created by code at runtime). I just manually flag objects that are created in the scene, and then when doing a destroy, I make the destroy call RPCMode.AllBuffered. It's messy, but it works.

I hope any of what I said is of any help at all, because unity networking is a complete fucker sometimes.
 
For your gear puzzle,
could you make the red gear also have openings like the blue one? That'd stop the chewing. Then a different solution would be needed, since with both gears like that it'd be trivial.
Why are brilliant ideas so blatantly obvious once you hear them? Yeah, I can absolutely do this and it will make the puzzle less broken and more interesting. Thank you for the input. I wasn't sure anyone would watch the video, let alone suggest a really good fix for that puzzle.

I've figured out the problem with the push blocks not always moving on the first attempt too, just have to implement the fix :) but now I have two fixes to implement and that's a good thing.
 

Vark

Member
cb_carpenter.png


More character portraits! Not 100% on the colors for this one but I don't not like it, I'm just not sure if I love it.

I may revisit it later I'm sure but it's time to press on.
 

Fox1304

Member
God damn the finishing touches of a game are the most tedious, boring, and depressing parts ! Game center, in-app purchase, high score sharing, screenshots ...
Can't wait to end this part, finally be able to publish and move one to the next steps.
 

Morrigan Stark

Arrogant Smirk
International GAF, I need help translating a few text lines for my game Snails.
The game is going to be released soon on Steam.
This is the game in question:

Snails

I need help translating to german, italian, french and spanish.
This are the texts that require translation. This are small hint messages to be displayed in the loading screen.

You can speed up the game by pressing the fast forward button (or space key).
To gain a better time bonus, escort the necessary snails and then go for the coins.
Coins are optional. You don't need them to finish the levels.
Sometimes you don't need all snails to finish a level.
If you find a level too hard, try levels from other themes.
Can't get a gold medal? Try other levels and come back later.
Drop the objects on the floor, snails will pick them up and use it.
When a snail hits the border of the map, they will turn back.
To get a gold medal you'll need: all snails and medals in the best possible time.
Gold medal requirements for the level are displayed in the pause menu.

You can PM me if you are interested. Sorry, but I have no $ to pay for this job, so you will have to do it for free. :(
Edit: but your name will appear on the game credits. You can then brag that your name appears on a Steam game!

Thanks!
PM sent.
 

Dynamite Shikoku

Congratulations, you really deserve it!
God damn the finishing touches of a game are the most tedious, boring, and depressing parts ! Game center, in-app purchase, high score sharing, screenshots ...
Can't wait to end this part, finally be able to publish and move one to the next steps.

Yeah that stuff sucks
 

Kritz

Banned
I'm not sure how I feel about my attempts at Unity 5's lighting.

That's what the game looked like in Unity 4, achieved through a yellowy sun


In Unity 5, the light looks much more realistic through its combination of GI/SSAO/PBR... but it also looks waaay more sterile. Outdoors it looks great, but inside has lost a bit of its style, perhaps?


With the default ambient lighting, the colours actually come from the skybox now. And the new default skybox is amazing - it's generated based on the angle of your primary light source, and will dynamically change colours when the sun is above or below your level.

So it ends up with this really cool night time effect, which I think looks great (despite my complete inability to place lights around a scene).

Part of the issue is that the roof casts a shadow inside of the building. Which, y'know, is realistic and all, but really blues out the light.


This is with the roof not casting shadows. Which brings back some of the colour, but makes the shadows appear just a little 'off'.

I dunno, I guess I'll play with it some more. Art has never been my strong suit.

Finally, for fun, some webms of nothing in particular:

http://i.imgur.com/hvzjMg9.webm
http://i.imgur.com/sxJZnbl.webm
 

Ventron

Member
one small tip that took me forever to work out for unity multiplayer:

never use Network.Instantiate. It's a buffered call that you can never get rid of. Even if you do a Network.Destroy - the instantiation call will persist when new clients join, but the network.destroy will not.

Every time you spawn a new object via code, I've found the best results is to do something like the following:

Code:
box
{
    public GameObject boxPrefab;

    void Update()
    {
        if(Network.isServer)
        {
            if(Time.time>100)
            {
                networkView.RPC("Destroy", RPCMode.All, this.networkView.networkViewID);
            }
        }
    }

    public void Spawn(Vector3 pos)
    {
        if(Network.isServer)
        {
            NetworkViewID newID = NetworkView.AllocateID();
            // any other server only config goes here

            networkView.RPC("SpawnBox", RPCMode.All, pos, newID);
        }
    }

    [RPC]
    void SpawnBox(Vector3 pos, NetworkViewID newViewID)
    {
        GameObject newBox = GameObject.Instantiate(boxPrefab, pos, rot, whatevs) as GameObject;
        newBox.networkView.networkViewID = newViewID;
    }

    [RPC]
    void Destroy(targetNetworkViewID)
    {
        GameObject target = NetworkView.Find(targetNetworkViewID).gameObject;
        GameObject.Destroy(target);
    }

    /*
    This is only run on the Server, and it is run each time a player connects.
    The logic behind this is that, if this box object exists on the server,
    then it must exist. So create this object on the new client.
    */
    OnPlayerConnect(NetworkPlayer player)
    {
        // I forget if you can RPC players directly, but if you can't there's a similar call somewhere
        networkView.RPC("SpawnBox", player, this.transform.position, this.networkView.networkViewID);
    }
}

In short,

the publicly accessible spawn function is what you call to spawn objects. It deals with making sure everyone ends up with the same networkID.

the RPC spawn function creates a gameobject locally for everyone but sets the object to have the same viewID.

The onPlayerConnect will create objects that already exist on the new client

The destroy will destroy the object on all clients who are currently connected (including the server).

So if you have one box, and run the Spawn() twice, you create two boxes on all current players. A new player joins, there are three boxes to run OnPlayerConnect, they all create copies on the new player. The server Destroys one box, so all currently connected players have that box be destroyed. A new player joins, this time there are only two boxes alive, so the server creates copies of those two boxes on the new player.

Which may sound like the most simple thing in the world, or the stupidest. But I never found any of this documented anywhere, so I just continually had pains with new players being able to see phantom objects that weren't destroyed by Network.Destroy or RemoveAllRPCs or whatever.

Finally, you have to treat objects that were initialised in the scene differently (as opposed to created by code at runtime). I just manually flag objects that are created in the scene, and then when doing a destroy, I make the destroy call RPCMode.AllBuffered. It's messy, but it works.

I hope any of what I said is of any help at all, because unity networking is a complete fucker sometimes.

Interesting. Thanks for the help mate.
Yeah, networking is a biatch. I remember being unable to debug some crashes on my old XNA games because of network issues :/
 
With the default ambient lighting, the colours actually come from the skybox now. And the new default skybox is amazing - it's generated based on the angle of your primary light source, and will dynamically change colours when the sun is above or below your level.

Just purely aesthetically, I think the third one looks best, but I have no idea how you feel about it 'stylistically' or if realism is a negative in this case.
 

Paz

Member
We hit Alpha on Assault Android Cactus! Finally on the path to completion, all gameplay and music complete and extra modes/features in (in some form) :D

There's still an incredible amount of work to do finishing off the visuals, cut-scenes, art gallery, but even so this feels like a huge step forwards right now.

Here's a random gif Tim made showing Cactus's weapon swap animation that people seemed to like :p
weapon_swap.gif


Edit All codes are now gone
Quote this post if you want an AAC key, I added 5 in the email tag (and let me know which one you took so I can cross it out).

 

Kritz

Banned
We hit Alpha on Assault Android Cactus! Finally on the path to completion, all gameplay and music complete and extra modes/features in (in some form) :D

There's still an incredible amount of work to do finishing off the visuals, cut-scenes, art gallery, but even so this feels like a huge step forwards right now.

Here's a random gif Tim made showing Cactus's weapon swap animation that people seemed to like :p
weapon_swap.gif


Quote this post if you want an AAC key, I added 5 in the email tag (and let me know which one you took so I can cross it out).


yo paz, I nicked the 5th key (B9H2D).

Once CBD hits a playable state on Steam I'll repay the favour for peeps in the thread :)
 

Paz

Member
yo paz, I nicked the 5th key (B9H2D).

Once CBD hits a playable state on Steam I'll repay the favour for peeps in the thread :)

Cool :) Enjoy!

Your lighting problem is an interesting one and something I had feared a bit with the drastic change in lighting models making it hard to achieve specific unrealistic styles, we'll be switching to U5 at some point (Probably when we move to 100% console dev though maybe sooner) so I'll be keeping an eye on how you go with this.

The U5 shots you posted just look a little too soft & blue compared to that really harsh (on purpose) fluorescent yellow style you had before.
 

Kritz

Banned
Cool :) Enjoy!

Your lighting problem is an interesting one and something I had feared a bit with the drastic change in lighting models making it hard to achieve specific unrealistic styles, we'll be switching to U5 at some point (Probably when we move to 100% console dev though maybe sooner) so I'll be keeping an eye on how you go with this.

The U5 shots you posted just look a little too soft & blue compared to that really harsh (on purpose) fluorescent yellow style you had before.

I'm sure it's purely down to lack of talent rather than anything inherently wrong with Unity 5. I'll look into having the lighting colours change based on if the player is indoors or out, and maybe that will allow me to have a warmer pallet inside and then when the player exits it shifts to the cooler blue.
 

Ventron

Member
We hit Alpha on Assault Android Cactus! Finally on the path to completion, all gameplay and music complete and extra modes/features in (in some form) :D

There's still an incredible amount of work to do finishing off the visuals, cut-scenes, art gallery, but even so this feels like a huge step forwards right now.

Here's a random gif Tim made showing Cactus's weapon swap animation that people seemed to like :p
weapon_swap.gif


Quote this post if you want an AAC key, I added 5 in the email tag (and let me know which one you took so I can cross it out).


Damnit, why must I be at work now :/ Game looks really amazing and polished!
 

Lautaro

Member
Quote this post if you want an AAC key, I added 5 in the email tag (and let me know which one you took so I can cross it out).

I took the third! Thanks a lot, I wanted this game since I tried the demo but being unemployed has made me cut all my game buying habits :/

EDIT: except for Homeworld... I just couldn't resist.
 

-COOLIO-

The Everyman
We hit Alpha on Assault Android Cactus! Finally on the path to completion, all gameplay and music complete and extra modes/features in (in some form) :D

There's still an incredible amount of work to do finishing off the visuals, cut-scenes, art gallery, but even so this feels like a huge step forwards right now.

Here's a random gif Tim made showing Cactus's weapon swap animation that people seemed to like :p
weapon_swap.gif


Quote this post if you want an AAC key, I added 5 in the email tag (and let me know which one you took so I can cross it out).

i grabbed the 4th. thanks a lot bro! ive been following your game for a while. best of luck : D
 

Paz

Member
I took the third! Thanks a lot, I wanted this game since I tried the demo but being unemployed has made me cut all my game buying habits :/

EDIT: except for Homeworld... I just couldn't resist.

You don't have to feel bad for being poor or for choosing not to spend money on my game when you do have it, just enjoy the game :)

Although if you do like it maybe leave a steam review haha.

<3 everyone in this thread, keep creating and supporting each other. I know I haven't posted that much due to being super busy but I still read it all the time and it's a great community everyone has built up.
 

Kritz

Banned
<3 everyone in this thread, keep creating and supporting each other. I know I haven't posted that much due to being super busy but I still read it all the time and it's a great community everyone has built up.

so long as the australians still get to silently overtake this thread
 

Fox1304

Member
So, about failure ...
I'm curious about how you guys decide when it's time to give up on a project and move on to something new.
We know that many games and projects in general don't succeed initially, but with a few ( or many ) changes and tweaks might find success and reach their audience, or even with the help of a viral article/video/anything.
Have some of you experienced this "it won't catch, I should move on now" moment ? What was the deciding factor ? And especially ... was it a good decision or do you regret it now ?
 

Dynamite Shikoku

Congratulations, you really deserve it!
So, about failure ...
I'm curious about how you guys decide when it's time to give up on a project and move on to something new.
We know that many games and projects in general don't succeed initially, but with a few ( or many ) changes and tweaks might find success and reach their audience, or even with the help of a viral article/video/anything.
Have some of you experienced this "it won't catch, I should move on now" moment ? What was the deciding factor ? And especially ... was it a good decision or do you regret it now ?

For my first game I had a lot of feedback that it was too difficult, so I spent a few weeks changing stuff and really improving the game. I released the update and bumped it's thread on touch arcade and tried to spread the word, but nobody gave a shit and sales didn't improve at all. I was prett much done with it after that. I did recently update it with 64 bit support though.
 

Jumplion

Member
So, about failure ...
I'm curious about how you guys decide when it's time to give up on a project and move on to something new.
We know that many games and projects in general don't succeed initially, but with a few ( or many ) changes and tweaks might find success and reach their audience, or even with the help of a viral article/video/anything.
Have some of you experienced this "it won't catch, I should move on now" moment ? What was the deciding factor ? And especially ... was it a good decision or do you regret it now ?

I've had several projects back in the day that my friends really wanted to go all gun-ho on but utterly failed. 30% was because of a complete lack of direction and no management skills from anyone to keep it moving. 70% was because they wanted to make an MMO.

I'm talking more from the perspective of during the production of the game rather than after. From my experience, stopping a project is a result of one of two things; either the game idea just isn't gelling the way I thought it would for a variety of reasons or I don't manage my time properly to keep me consistently working on it (which as a student is doubly hard/annoying).

For the first one, sometimes a game idea sounds good in your head but just doesn't work. I'm pretty stubborn with how I like things from my head to get put on paper, so if it doesn't work I usually end up scrapping the whole thing. I tend to be fleeting in my ideas, but I'll combine stuff here and there until I get the idea down just right in my head.

By far, though, most of the time it's my lack of management skills. I'm personally trying to work on maintaining short, simple deadlines for simple tasks. I was actually going to post a recommendation for Producteev, it gels with me better than Trello from the OP. Lets you set subtasks, set priorities, and deadlines to remind you when stuff's due.

In the end, regardless of whether a game is working out or not, I feel that you should at least finish it to some extent. I'm still working on actually completing projects myself, but even if you just wrap up the last parts of a game that you've given up on in a week it's still valuable to learn from it.
 

Xtra Mile

Neo Member
We hit Alpha on Assault Android Cactus! Finally on the path to completion, all gameplay and music complete and extra modes/features in (in some form) :D

There's still an incredible amount of work to do finishing off the visuals, cut-scenes, art gallery, but even so this feels like a huge step forwards right now.

Here's a random gif Tim made showing Cactus's weapon swap animation that people seemed to like :p
weapon_swap.gif


Edit All codes are now gone
Quote this post if you want an AAC key, I added 5 in the email tag (and let me know which one you took so I can cross it out).


Awesome. Aussie power! Haha.

So... last night this happened:



Pretty surreal, but highly recommended.

It is hard to process that we won an award at the same event that Hironobu Freaking Sakaguchi got a lifetime achievement award.

Congrats man. That's fantastic!
 
Status
Not open for further replies.
Top Bottom