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

Dynamite Shikoku

Congratulations, you really deserve it!
I am wondering about one thing, if you have a game with hundreds of variables, classes, dependencies, let's say a RTS game for example, how do you handle your save game?

how do you make sure every single variable, etc is saved and loaded correctly in an easy way? I am thinking if there is a way to dump all the memory allocated in your game into a file and load the game state from it, any good ideas how to do that or something better?

I really don't want to write a save game class since there are so many classes, variables and dependencies that I will get old trying to save everything, probably will take a month or more

You just serialize the classes with the data you want to save, no?
 

scaffa

Member
That looks and sounds so great! Really cool. Thanks for sharing.

Looking good

Thanks for the comments! Great to hear, especially about the audio :) Making the game has been a great learning experience. My background is not in audio but starting to feel a bit more comfortable with it, hope with the next game I can buy some proper equipement and such.

And for those that dislike CA, it's optional :p
 

gooey

Neo Member
Aw man. Old fighting game stages are truly some of the most inspiring/impressive works of video game art.
Delicious.
 
You just serialize the classes with the data you want to save, no?

yeah , serializing is one option, but when you have a lot of circular references then it won't work and have to break up the circular references before saving, otherwise the serializer saves in circles forever until your program crash, so one way to solve is by manually removing the references and change those to other temporary values, I did that for a utility I made to edit 2d animations, but for a game of this scale doing that will take a lot of effort , so I am looking at any other option.

Why so many circular references, well is kind of complicated but basically you can say a character can be a friend of another one, and the other is also your friend, so you store that into lists of objects per character, so at the end you end up with hundreds of lists that allows you to manage character relationships, this is just one example.
 

Water

Member
You just serialize the classes with the data you want to save, no?

"Just"? I don't think that is necessarily an easy task with complex game data where things reference each other. Planning for savegames from the start and laying out all the game data in a specific way would probably be the way to go. A proper save system will have to distinguish between the dynamic data that must be serialized, cached data that can be regenerated from the serialized data, and resources that need to be loaded / initialized for that game state but do not go in a save file.

This is something I'll have to research and figure out pretty soon myself, for C# and Unity projects specifically.
 

Water

Member
yeah , serializing is one option, but when you have a lot of circular references then it won't work and have to break up the circular references before saving, otherwise the serializer saves in circles forever until your program crash, so one way to solve is by manually removing the references and change those to other temporary values, I did that for a utility I made to edit 2d animations, but for a game of this scale doing that will take a lot of effort , so I am looking at any other option.
My gut feeling is that the nice and scalable way to solve this is to write the reference-serializing code just once generically into the serializer, not individually for specific game classes, tag all data in the game code so the serializer knows what should be saved, and have the loading code run a specific init function on all loaded objects where just restoring the core data isn't enough.
 
My gut feeling is that the nice and scalable way to solve this is to write the reference-serializing code just once generically into the serializer, not individually for specific game classes, tag all data in the game code so the serializer knows what should be saved, and have the loading code run a specific init function on all loaded objects where just restoring the core data isn't enough.

that sounds interesting, but not sure how to implement a very generic serializer that can take all the references and break them easily without significant effort maybe a couple of weeks to make it to work?, I saw some examples from XNA in which class references are treated as shared resources and written separately, so the serializer won't just write in loops, it will be nice if there is a open source solution for this, we can all benefit from that solution for all our games
 

Jams775

Member
Blender (or any other modeling tool) can be used to create textured models, either simple or complex. There is a learning curve to it, certainly.

I am not a professional but I think the normal flow is for tools like Blender to create "assets" -- modular walls, stairs, windows, doors, computers, monsters, guns, etc. Then, an actual game engine (Unity, Unreal Engine 4, etc.) is used to combine a bunch of those assets. Think taking LEGO pieces, and placing them to form a "building", which is your level.

If you want to make a game with very straight, blocky environments, you might be able to use BSP blocks/quads created in the engine itself and apply textures to them. Otherwise, you'd model those in a modeling program, and import them into the engine.

There may be special cases for things like landscapes...I'm not very familiar with how you would import those, and at least in the case of Unreal Engine 4, I think there are some built-in tools for creating them.

As mentioned above, Blender very much can beyour one stop shop for modelling texturing and animating, its just... sorta really clunky to learn.

For making levels, theres actually a few different ways you can do it that Unity supports, and which one you go with is pretty much your choice. They all have different Pros and Cons.

First off, is the giant mesh level - you build the entire level as one huge model and then import it, then just add it to a scene with collision, and there you go. This used to be pretty common in game development (at least one of the GTAs is built this way IIRC, and a lot of Q3 maps were too) but isn't so common anymore as levels become less "made by one guy" affairs.

Second is the terrain tool - just add a terrain gameobject, and then use unitys built-in terrain tools to modify it (or other terrain tools from the asset store). You then import specific models as static props and place them where you want on the terrain. This is the method Unity was clearly designed around using, and is extremely common to see in game development.

The third most common way - and the way a lot of random and pseudo random level layout games like diablo do it - is building sections of a level as 'building blocks' that can be attached to each other. In Unity, you would probably use a Plane of a fixed size, and then drop models on it as though it was a tile for a diorama, then either manually or procedurally add tiles together to create levels. For games based on tile based movement especially you can get really good results this way.

Thanks for the tips. I guess I'll have to keep looking around for better blender tutorials then. I only ever got as far as being able to subdivide the face of a cube. ended up making an awful maze that didn't even import correctly.
 

cbox

Member
Blender (or any other modeling tool) can be used to create textured models, either simple or complex. There is a learning curve to it, certainly.

Yeah blender takes a metric tonne of patience to learn, but it's pretty awesome once you do.
 

missile

Member
Hey guys, I'm joining the CA-train! :)

Here is my take...

ca-train.gif


You like it?

The CA effect depends on the lens' distortion function which can be quite
arbitrary here, hence, position dependent and anisotropic CA can be created
making it possible to create some pretty cool 2d raindrops, water effects,
whatever.


Edit: Without CA it doesn't look as good.

lens_ca_no.gif
 

Jobbs

Banned
Hey guys, I'm joining the CA-train! :)

Here is my take...

ca-train.gif


You like it?

The CA effect depends on the lens' distortion function which can be quite
arbitrary here, hence, position dependent and anisotropic CA can be created
making it possible to create some pretty cool 2d raindrops, water effects,
whatever.

AGH MY EYES I CAN'T STAND IT AGHHHH!!! MELTTTINNNG
 

gooey

Neo Member
Hey guys, I'm joining the CA-train! :)

Here is my take...

ca-train.gif


You like it?

The CA effect depends on the lens' distortion function which can be quite
arbitrary here, hence, position dependent and anisotropic CA can be created
making it possible to create some pretty cool 2d raindrops, water effects,
whatever.

Reminds me of a screen saver I would stare at instead of learning French when I was in primary school. My 6 year old self would have described it as "Wicked-sick-awesome".
 
Thanks for the tips. I guess I'll have to keep looking around for better blender tutorials then. I only ever got as far as being able to subdivide the face of a cube. ended up making an awful maze that didn't even import correctly.

There are literally hundreds of actual modelling tutorials out there for Blender, but I linked this one upthread as a good one for getting a decent low-poly aesthetic in Unity.
The method they use is - by far - the quickest and easiest way to do UV-unwrapping of a model too
 

Jams775

Member
There are literally hundreds of actual modelling tutorials out there for Blender, but I linked this one upthread as a good one for getting a decent low-poly aesthetic in Unity.
The method they use is - by far - the quickest and easiest way to do UV-unwrapping of a model too

You're my damn hero. The problem is that there are sooo many Blender tutorials and that makes it hard to find the right ones without knowing exactly what to search for. Then you still need to go through all the search results and find them.

So thanks. This is going in my bookmarks.
 

Water

Member
that sounds interesting, but not sure how to implement a very generic serializer that can take all the references and break them easily without significant effort maybe a couple of weeks to make it to work?, I saw some examples from XNA in which class references are treated as shared resources and written separately, so the serializer won't just write in loops, it will be nice if there is a open source solution for this, we can all benefit from that solution for all our games

Rolling your own is significant effort for sure, but I'll probably try to find and adopt an existing one. For instance, googling "Unity serializer" gives lots of hits that look good, eg. https://github.com/jacobdufault/fullserializer

Still, with tech this fundamental I expect I won't be happy just going with something that seems to work perfectly, I'll at least want to dig around its guts and figure out roughly how it's doing what it's doing.
 
Hey guys, I'm joining the CA-train! :)

Here is my take...

ca-train.gif


You like it?

The CA effect depends on the lens' distortion function which can be quite
arbitrary here, hence, position dependent and anisotropic CA can be created
making it possible to create some pretty cool 2d raindrops, water effects,
whatever.


Edit: Without CA it doesn't look as good.

lens_ca_no.gif
Needs more separation to compete with AAA and lack of dust and blood on viewport = no buy.
 
What would you like doing the most, or what are you interested in the most
when programming games given your cs/research interest? Did ever post
something about your side projects?

End game is to work on rendering stuff, but I really like being able to help out with all areas of engine/code. I'm actually in talks with someone now about switching from web to games. But it's early so we'll see.

I pinged one of my team members to see if he ever made a video of our final Unreal game for a capstone class. I'll post it here if he has it..

As for side projects, I had a lisp based agent for a board game, and some cool graphics projects. However, I don't have anything ready to show just yet. It's weird when you meet a certain level of quality at work and aren't even close on side projects. I'm not sure what my threshold is (I would obviously post before reaching full professional quality), but outside of the capstone game I haven't reached it yet.
 
Rolling your own is significant effort for sure, but I'll probably try to find and adopt an existing one. For instance, googling "Unity serializer" gives lots of hits that look good, eg. https://github.com/jacobdufault/fullserializer

Still, with tech this fundamental I expect I won't be happy just going with something that seems to work perfectly, I'll at least want to dig around its guts and figure out roughly how it's doing what it's doing.

that one looks interesting, though I am not using Unity I think I may be able to adapt it to my project, will try and see if it can work, otherwise I may have to write one myself... as you mentioned this is fundamental for game programming and if we can have one for any platform it will save a lot of effort to everyone.

the last solution is to not have save games :p and let people do marathons playing my game and see if they can finish in iron mode, no way to save and restore because there is no save capabitlity.
 
I pinged one of my team members to see if he ever made a video of our final Unreal game for a capstone class. I'll post it here if he has it..

As promised, here was the Unreal game I mentioned before. The capstone class had us use the history department as a "client". We were building an American Civil War education game where players find historical documents on the Pratt Street Riot while avoiding guards. It isn't super impressive, but it was my first time using Unreal (I was the lead of 3 programmers), and I'm pretty happy with how it turned out - even though all I see now is the flaws.

https://www.youtube.com/watch?v=-Q8b6bYaU2c
 

friken

Member
Hey guys, I'm joining the CA-train! :)

Here is my take...

ca-train.gif


You like it?

The CA effect depends on the lens' distortion function which can be quite
arbitrary here, hence, position dependent and anisotropic CA can be created
making it possible to create some pretty cool 2d raindrops, water effects,
whatever.


Edit: Without CA it doesn't look as good.

lens_ca_no.gif

I like CA personally. It has an interesting cimema impact on scenes to me, even though I can't think of a movie that uses it, seems like there is likely a list a mile long?
 

JulianImp

Member
So, I've been writing a bit for my short VN test this week. Thinking about stuff I forgot to implement for the dialog system I just remembered I still haven't coded audio panning (and pan tweening) functions.

Having read the short article on how the people at MangaGamer ported Higurashi to Unity also gave me the idea of creating a simple additional wait format using two tag calls: one that sets a bit flag as true for a specified duration in seconds, and another that tells the typing system to wait until either a specific flag or all flags have been cleared. That'd be the simplest way to, say, start a sprite transition while text is still being typed, and only stopping the typing at the end if the flag is still up when the "wait for flag" event is reached.

...Really, I want to stop thinking up new and useful stuff so that I can move on to beta stage and ship v1.0 once and for all, as I'm already over two months behind the release date I had originally planned for all these tools.

Finished up all the community/trading card assets. Feelsgoodman.gif

Hc3DD62.png

WygBH6a.png

Nice! It's really interesting to see the process for trading card creation detailed like that, since it's one more thing anyone who's considering releasing anything on Steam can take into account to try and get it out of the way early on.
 

Turfster

Member
Anybody familiar with character movement in UE4, I am attempting to add momentum to the run to stop transition animation. Currently, as soon as the character stops receiving input, all movement stops and the run to stop animation plays in place. Anybody know how to fix that?

I think the "correct" way to do it is with a slowdown animation with root motion?
I've implemented mine by getting the velocity on input stop and start a timeline that keeps adding a decreasing factor of that for X time depending on input speed.
 

mStudios

Member
Hey guys, does any of you know anything about film-making?
I've got a Note 3, which I think it has more enough quality to shoot my videogame trailer.
However, I do not what tools I need to actually shoot it.

This is what I have in mind:
Camera Stabilizer
Microphone
Camera Kit

Anything else?
 

missile

Member
Needs more separation to compete with AAA and lack of dust and blood on viewport = no buy.
I leave this for the big guys. xD Btw; is bokeh still cool?


End game is to work on rendering stuff, but I really like being able to help out with all areas of engine/code. I'm actually in talks with someone now about switching from web to games. But it's early so we'll see.

I pinged one of my team members to see if he ever made a video of our final Unreal game for a capstone class. I'll post it here if he has it..

As for side projects, I had a lisp based agent for a board game, and some cool graphics projects. However, I don't have anything ready to show just yet. It's weird when you meet a certain level of quality at work and aren't even close on side projects. I'm not sure what my threshold is (I would obviously post before reaching full professional quality), but outside of the capstone game I haven't reached it yet.

As promised, here was the Unreal game I mentioned before. The capstone class had us use the history department as a "client". We were building an American Civil War education game where players find historical documents on the Pratt Street Riot while avoiding guards. It isn't super impressive, but it was my first time using Unreal (I was the lead of 3 programmers), and I'm pretty happy with how it turned out - even though all I see now is the flaws.

https://www.youtube.com/watch?v=-Q8b6bYaU2c

Dat fox! :) Nice. But do replace the fox with a cat and you are set! Well, I'm
still waiting for a game where one fully explores a world with the eyes of a
cat (third person). So perhaps this may be a good start for you and your
"capstone game". :+

I like how you say "end game is to work on rendering stuff ...". xD Yeah, it's
cool that you are interested in this topic (you commented on the rotorzoom, if
I remember correctly). So keep going with your study and show your stuff over
here! Perhaps we may work together some day! Dat racing game! :)


I like CA personally. It has an interesting cimema impact on scenes to me, even though I can't think of a movie that uses it, seems like there is likely a list a mile long?
I came to realize (from experience) that artists do favor the effect more than
technically drilled people do. Anyone? A friend of mine is a professional
photographer and he as well likes the effect because of what you said. But in
the end, I think, it really boils down to what Absinthe hinted at, that many
of the effects are simply abused beyond believe.
 

Water

Member
Finished up all the community/trading card assets. Feelsgoodman.gif
What do your profile backgrounds look like?

For some reason, every other dev seems to mess them up and use pics where the focus / subject is in the middle, which simply doesn't work when the pic is actually used in a profile.
 

Oodar

Neo Member
Why so many circular references, well is kind of complicated but basically you can say a character can be a friend of another one, and the other is also your friend, so you store that into lists of objects per character, so at the end you end up with hundreds of lists that allows you to manage character relationships, this is just one example.

Why is this a problem? You should just be storing a list of ids. It doesn't matter that one character has the other one in each of their lists.

Character A: Friends={Character B}
Character B: Friends={Character A}

You aren't trying to follow "references", just store them so why do you end up with an infinite loop?
 

HowZatOZ

Banned
Well, the Kickstarter is now live.

Let the 30 days of madness commence ;)
Hah you are on the Gold Coast, nice. Always good to see some talent not in Brisbane, and from where I grew up as well. Good luck with the Kickstarter, I'll have to pledge when I get home to support you!

Since quitting out of the games journalist field I finally decided to finish off my games degree and have been working on a project in the sidelines that I'm really excited about. I hope to have something more solid to show once the initial prototype is "complete" but it's looking to be chaotic fun.
 

Xtra Mile

Neo Member
Love almost everything about this game! I would just add some more dirty-talk,
funny sayings, etc.. :) Friends of mine may throw some dollars in there as
well. Good luck!

Thank you kindly, missile! Any help appreciated.

Good luck with the Kickstarter!

Cheers mate!

Are you from the gold coast? Good luck.

I am indeed! Thanks!

Oh hello, a fellow QLDer indie dev? :)

State of Origin night! Where are you based?

Hah you are on the Gold Coast, nice. Always good to see some talent not in Brisbane, and from where I grew up as well. Good luck with the Kickstarter, I'll have to pledge when I get home to support you!

Since quitting out of the games journalist field I finally decided to finish off my games degree and have been working on a project in the sidelines that I'm really excited about. I hope to have something more solid to show once the initial prototype is "complete" but it's looking to be chaotic fun.

Thanks man! I lived in Brisbane for a year, but loved the coast to much and returned.

Oh yeah? Sounds cool. Look forward to seeing it once you're ready!
 

Xtra Mile

Neo Member
Did I see Liu Kang? haha
Backed, btw.

Alice 1:1

The name of the game is Nostalgia: Two Worlds, One Soul.
A brief description would be, even though the come from different worlds, they share the same soul. If you die in one world, your other "I" dies too.

If I knew how to do a heart emoticon, I would, haha. Very nice. Thanks! That's a twitter follow for you!
 

Xtra Mile

Neo Member
Friend asked; what about a MAC version?

We're using Unity, so Mac version should be fine. The only issue is neither me nor the programmer owns a mac, hence the stretch goal to purchase for extensive testing. That being said, I sent a Mac user the latest build and it worked without issues, so should be fine. If it doesn't work, they get a refund!
 

Yoshi

Headmaster of Console Warrior Jugendstrafanstalt
Did I see Liu Kang? haha
Backed, btw.

Alice 1:1

The name of the game is Nostalgia: Two Worlds, One Soul.
A brief description would be, even though the come from different worlds, they share the same soul. If you die in one world, your other "I" dies too.

Sorry, but I'm really confused by the right character art, it looks like she has super-thin mini-breasts that a being held in place be a very thin mini-bra. Is this intentional? If not, what is this black thing under her breats?
 

mStudios

Member
Sorry, but I'm really confused by the right character art, it looks like she has super-thin mini-breasts that a being held in place be a very thin mini-bra. Is this intentional? If not, what is this black thing under her breats?

Its probably the coat's perspective. She's got normal breast haha.
The black thing should be her undershirt. I should be posting a fixed version soon.

T3Ioer0.jpg

Horrible sketch^
 
Why is this a problem? You should just be storing a list of ids. It doesn't matter that one character has the other one in each of their lists.

Character A: Friends={Character B}
Character B: Friends={Character A}

You aren't trying to follow "references", just store them so why do you end up with an infinite loop?

storing a list of ids is one way to do it, but it is a lot better if you store the the same object as reference so you don't have to go to the index and then to the object, makes things faster when you have hundreds of items , also you don't have to care about the order of items, you can sort and do many things, if you use a list of ids it make things a lot harder. In my previous tool it got really complicated doing ids and once I converted everything to references things ran more smoothly and was super easy to manage.

So the way I solved this issue before was to convert all my object references to ids and then store that into a save xml file, and then when loading it again convert the ids back to object references, it works but is a lot of maintenance work so I am trying to avoid that.
 

Yoshi

Headmaster of Console Warrior Jugendstrafanstalt
Its probably the coat's perspective. She's got normal breast haha.
The black thing should be her undershirt. I should be posting a fixed version soon.

T3Ioer0.jpg

Horrible sketch^

Ah now I see, the problem is that the underskirt and the inner side of the coat are exactly the same colour (pitch-black) - maybe you could just make one of those a tad brighter?
 
Status
Not open for further replies.
Top Bottom