• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
bglanzer

Planning - What do you use?

18 posts in this topic

I'm interested to see what other's use when planning a big project such as a game or game engine.

I've used StarUML and find it somewhat cumbersome. Going through each class writing variable and method names all of which I will actually be doing when writing code. Often times I will decide to make changes while writing my code and have to go back into it to make changes to the diagram.

I've heard some people recommend XMind which I have used as well but I find that as more of just a way to map ideas for a game and doesn't seem to help when planning the actual code structure and design of your game.

My tried and true method though somewhat unorganized is a notebook. I usually buy a new notepad when I start a new project and just start drawing my classes with arrows write some method/variable names. I have arrows pointing everywhere and notes on the edges of my paper.

Does anyone use any methods that are more organized than a notebook yet less cumbersome than an actual UML diagram?
1

Share this post


Link to post
Share on other sites
[quote name='bglanzer' timestamp='1340477451' post='4952065']
Does anyone use any methods that are more organized than a notebook yet less cumbersome than an actual UML diagram?
[/quote]

Python.
-2

Share this post


Link to post
Share on other sites
I have never had to use any such system professionally nor on my hobby projects. I certainly don’t see any point on hobby projects, and if you have to do it for work then they will tell you what to use.

I keep my plans in my head and only execute after all the plans come together and I see how the well oiled machine is going to work in its entirety.

Note that this is not the same as documentation which is much much more important. I Doxygen all of my personal engine code religiously (important considering it is meant to be sold to and used by others).

Outside of that, I don’t see a point in making diagrams etc. Ironically, they try to clarify relationships between objects, but for me they just obfuscate things; I would much rather just look at the code—tons clearer. I only imagine a few situations where companies actually try to maintain UML diagrams or friends, but most, including large ones, don’t for the reasons you mentioned. Time wasted keeping them up-to-date is less time spent developing things, and it makes programmers resistant to necessary upgrades.
A small change could help the project a lot structurally or perhaps just make it more efficient. But if that goes along with a UML update people are likely to just not do it unless it becomes absolutely necessary.



L. Spiro
2

Share this post


Link to post
Share on other sites
Excel

It's very easy to move bits around and add arrows. It also has the added benefit that you can work out memory requirements and prototype equations etc.
0

Share this post


Link to post
Share on other sites
I use UML, but I don't bother to map out the entities' methods and attributes - it is the structural relationship between the elements that is important. A whiteboard is the best place to do this, especially when one is working in a team.

Crucially, I don't try to keep and maintain the UML as a form of documentation. The problem with this form of documentation is that it quickly gets out of date. Things like UML are best used when working something out as a team, agreeing on responsibilities, etc.

Once we're happy that we have created something workable, and everybody is clued up on what they have to do, we just crack on and build the thing. Given the structural context from the UML, we are all able to understand what we are looking at when we deal with each other's code.

So thats how I do planning when it comes to code structure.

If what I'm working on is a game, for things like gameplay concepts, and feature lists, I use XMind to create a mind map. This is great for fleshing out the different parts of an idea; for example, working out what weapons are needed, working out what different monsters go in the world, etc. This is only high level planning, as drilling too far into it creates something you are unlikely to follow.
1

Share this post


Link to post
Share on other sites
[quote name='L. Spiro' timestamp='1340482433' post='4952088']
I have never had to use any such system professionally nor on my hobby projects. I certainly don’t see any point on hobby projects, and if you have to do it for work then they will tell you what to use.

I keep my plans in my head and only execute after all the plans come together and I see how the well oiled machine is going to work in its entirety.

Note that this is not the same as documentation which is much much more important. I Doxygen all of my personal engine code religiously (important considering it is meant to be sold to and used by others).
[/quote]

I really like doxygen but I have never taken full advantage of it because of the additional comment formats. Though I do use it to make a documentation of my code.

[quote name='speciesUnknown' timestamp='1340485321' post='4952105']
I use UML, but I don't bother to map out the entities' methods and attributes - it is the structural relationship between the elements that is important. A whiteboard is the best place to do this, especially when one is working in a team.

Crucially, I don't try to keep and maintain the UML as a form of documentation. The problem with this form of documentation is that it quickly gets out of date. Things like UML are best used when working something out as a team, agreeing on responsibilities, etc.
[/quote]

I usually do the same. When trying to work out how each of my classes will inherit from each other I will create a diagram with the classes consisting of only names.
0

Share this post


Link to post
Share on other sites
[quote name='L. Spiro' timestamp='1340482433' post='4952088']
I keep my plans in my head and only execute after all the plans come together and I see how the well oiled machine is going to work in its entirety.
[/quote]

I'm sure that you have a lot of development experience professionally so you can easily do this. For those of us who are mere mortal human beings it is difficult to conceptualize non trivial systems. Of course the point here is that with time and the experience it brings bglanzer, you'll be able to do this and you'll no longer be just a mere mortal ;).

I like to use UML and a good old fashioned notebook. For UML I prefer tools that are very lightweight and minimal, and a tool call UML Sculptor fits the bill nicely. I only model rough class diagrams and/or methods, depending on how comfortable I am with how I'm going to approach the project. After that I usually don't touch the model again until I want to iterate on my design (if I even do that). Basically I use UML as a simple block out or brainstorming device, not as a crutch or even primary design tool. For notebook stuff I usually just draw out sequence diagrams and thread related stuff, because it's hard to keep a white board by my desk and I can't really flip a page on one either. White boards are really nice alternatives to UML programs though because you can quickly edit them or start over, that's the miracle of dry erase markers.

Eventually I guess you just learn to think with design patterns and other principles that you've learned, and then you can easily conceptualize systems of arbitrary size with relative ease like L. Spiro.


UML Sculptor: [url="http://blog.nuclex-games.com/tools/uml-sculptor/"]http://blog.nuclex-g...s/uml-sculptor/[/url]
0

Share this post


Link to post
Share on other sites
I've been designing my classes in my head for about 10 years and only then started using UML. Those years before certainly weren't for naught, since I acquired to skill to explore designs in my head (trying to describe the process is a bit weird... it's like arranging the classes in 3D, but they have no geometric shape, I just know where they are) :)

But there's a limit to how big a system I can keep in my head, so that's what I now use UML for. I think about small islands of objects while keeping in mind what the rest of the system requires from them. I can always look at the whole system in my UML diagrams. They're also cool to communicate ideas and concepts to other people (though it takes some getting used to if those other people have worked primarily with pure code before -- it's like a foreign language, at first you concentrate on just getting the meaning before it becomes intuitive and you /see/ the meaning while you can think about the idea the whole diagram communicates).

I use UML Sculptor as well (see URL above).

I tried several other tools (including high profile ones), but they all had such a cumbersome workflow that they would be more suitable as post-mortem documentation tools and not for exploring designs.
1

Share this post


Link to post
Share on other sites
[quote name='L. Spiro' timestamp='1340482433' post='4952088']
I have never had to use any such system professionally nor on my hobby projects. I certainly don’t see any point on hobby projects, and if you have to do it for work then they will tell you what to use.

I keep my plans in my head and only execute after all the plans come together and I see how the well oiled machine is going to work in its entirety.
[/quote]

You must be a very extraordinary human being, close to superhuman.

Sorry for being an a.. , but honestly I just can't believe anyone can think and plan any effectively without making notes and sketches. Normal humans just don't have enough temporary memory (or called working memory, if i recall correctly) to do that.
Or maybe someone can just code, but I can't believe that in that case, most of the time is not spent with compiling/debugging/compiling.

Maybe I misunderstand, and you are talking about classes, but not other smaller planning, like mathematical problem solving.

Anyway, I just use paper and pen and keep the important papers organized. Edited by szecs
0

Share this post


Link to post
Share on other sites
I'm not totally unconvinced when people say they plan everything in their heads. If you were to ask me many years ago how structured a game, I wouldn't know, and would have to mess about with UML first, but if you asked me to do the same now, I could build you a high level UML from scratch, without pausing. Some things stick with you if you do them a couple of times, including structures.

But this is not really the same as planning - there is still a component of planning the order you will implement things in, or divvying up labour, which requires turning your map based diagram into an ordered list of tasks to be performed.

For example, anybody who has owned a bicycle could do a crude drawing of one from scratch without references, probably starting with the frame and working their way out, because the high level details of the structure of a bicycle stays in your memory once you fix one a couple of times. Once you have the most basics (frame, front forks, wheels) I could then ask you to add details one by one; you would know where to put the gear hubs, the chain, the pedels, the brakes, the seat, etc. because you know the relationships between all the relevant objects and because your brain can project that relationship into a higher or lower order space, in this case 2D.

Putting a bicycle together in real life, however, requires that you have an ordered plan, and this is probably where those people are falling short - code will suffer from growing pains and excessive refactoring if things are added piecemeal with no consideration to the order they will be required. You might come to paint it and find that you need to remove the bearings, because you didnt consider what order to do these things in.

This happened to me when I built my PC. I screwed the motherboard down to the backing place, then came to put the CPU on, and found that the force required to put the CPU on was bending the motherboard; I had to take it off again and rearrange the little columns they give you to space the mobo from the backing plate. I knew where everything should go, but not the order of construction, and wouldn't have been able to divide labour up between individuals in a team for the same reason. Edited by speciesUnknown
0

Share this post


Link to post
Share on other sites
I don't think bicycle building fixing is a good analogy to programming. In programming, most of the time you are making something new for you (I'm not talking about code monkey jobs of course) when you are making a new project. Not totally new, but there will be something that you haven't done before. At least hopefully....
0

Share this post


Link to post
Share on other sites
I use a notebook (quarter ruled 5 squares to the inch, preferrably). In the time it takes me to fire up some graphics program, create and label boxes, draw label and join arrows, I could have gotten all my thoughts down on paper with a few swift strokes of the pen, revised it, scribbled notes, and moved to creating code. I fail to see thepoint of using a complex solution when a simpler solution is faster, easier, and more effective. Perhaps if I had a tablet for data entry and software that could recognize my scrawls and turn them into UML diagrams from freehand drawings with text entry recognition for labels and notes?
1

Share this post


Link to post
Share on other sites
[quote name='szecs' timestamp='1340544685' post='4952312']
I don't think bicycle building fixing is a good analogy to programming. In programming, most of the time you are making something new for you (I'm not talking about code monkey jobs of course) when you are making a new project. Not totally new, but there will be something that you haven't done before. At least hopefully....
[/quote]

I agree, with a bicycle you are building something out of assorted parts that are pre-designed to work together.. with software you are [u][i]building something out of nothing[/i][/u]. You ARE the engineer, and you ARE the assembly line worker. I think a better analogy would be if you were designing a building, would you really do the whole thing in your head? Maybe if you were Davinci, but we still find lots of drawings of his designs.

The one thing that I have trouble with and really want to know is how do you come up with multiple [b]different [/b]designs, anytime I try to come up with another fresh one it always ends up looking like the previous. Maybe I just don't understand my domain well enough to in those circumstances?
0

Share this post


Link to post
Share on other sites
[quote name='M6dEEp' timestamp='1340576411' post='4952459']
The one thing that I have trouble with and really want to know is how do you come up with multiple [b]different [/b]designs, anytime I try to come up with another fresh one it always ends up looking like the previous. Maybe I just don't understand my domain well enough to in those circumstances?
[/quote]

You have to decouple coming up with variations from testing/evaluating the variations.

Don't try to come up with ideas that make sense. Just throw on paper (or whatever) any shit that comes to your mind. Even if it's totally crazy.
Like "how to deal with different overlapping states?" - "Pork and beans!!!11"
Evaluate ideas after this step. Edited by szecs
0

Share this post


Link to post
Share on other sites
Just got back to this topic since my reply and was surprised at the replies to my comment.
I had no idea I was describing something “super-human”. If I consider that I do something differently from the norm, the first thing that pops to mind is my planning period, not my ability to remember short-term ideas.

I used to tell my old boss that when I have just started a new task and it appears as though I am just sitting in my chair wasting time looking at my desk, in reality I am thinking about the system and how to implement it and what could be impacted by the system etc.
I always considered my “difference” was in my planning period, which is longer than those I have met. I have drawn pictures only in a few cases and have used UML 1 time as an order for that same boss (and that diagram failed fairly handily, because I just can’t think that way nor keep it updated when things change—tedium does not excite me).

I don’t know if this still sounds super-human. Instead of drawing things out, I think about them longer. After doing that for so long, it does get easier to do, just as anything does when you do it all the time. So it may be one of those things you just need to do a lot before it becomes fairly easy.

But as for this comment:
[quote name='szecs' timestamp='1340542547' post='4952302']
Maybe I misunderstand, and you are talking about classes, but not other smaller planning, like mathematical problem solving.
[/quote]
Mathematical problem solving is [b]always[/b] entirely conceptual because that is just how I do math. I “see” the results of cos() and sin(), etc. Any math I do is entirely a mental image to me. I can’t understand anything I cannot envision in my mind.
That basically means drawing anything out on paper etc. is just a slower version of imagining it, but also means that I can’t understand anything I haven’t figured out how to envision (mathematically). And there are plenty more things I still do not know how to envision in the world of math.


L. Spiro
0

Share this post


Link to post
Share on other sites
I use several different methods, depending on who I am working with. I mostly stick to Cacoo and my tablet though.

[b]Cacoo/UML[/b] ([url="https://cacoo.com/"]https://cacoo.com/[/url]) - Ill usually use Cacoo when I am trying to document my architecture formally. UML is great if you are trying to convey ideas to different people as many software engineers understand it and it gives a good overall picture of your system. Generate only diagrams which are useful for you however. When not doing documentation for accademic projects I mainly stick to Class and Activity diagrams. For large projects, Component diagrams are highly useful.

[b]HTC Flyer/Tablet[/b] - A tablet can be great for quickly capturing ideas for later reference. My HTC Flyer comes with a stylus like the more famous Samsung Galaxy Note, so it makes drawing out plans for menus or quick scetches for what a UI looks like easy. Drawing on a tablet also means its really easy to share with others, either digitally or by passing the tablet around physically. Edited by andrewoid
0

Share this post


Link to post
Share on other sites
I have used Microsoft Visio for visual elements and diagrams for how pieces relate. (Diagrams, flow charts, class diagrams, etc).

And Microsoft Project to layout a schedule. Those two tools are very powerful for getting work done.

I would suggest in investing in them, they also have purpose in a professional environment too, so learning how to use them is a bonus.
0

Share this post


Link to post
Share on other sites
I can't remember things worth a damn so when planning something I pretty much just type all my thoughts into notepad or some other text editor. I figure that this way when I wonder what the hell I was thinking when I made some decision I can go back and see what the thought process was that got me there. Also that way if I end up going off on some tangent that doesn't really fit into the project and is cut out or something, I have something that I can come back to later if it might be suitable in another project.

The majority of projects that I've worked on have pretty much been on my own. If I was working on something that required co-ordination of a team I might look into using some sort of project management software. And though diagrams might be good for documenting how one system interacts with another, I'm not as clear on their value in the design process.
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0