Jump to content

  • Log In with Google      Sign In   
  • Create Account

FREE SOFTWARE GIVEAWAY

We have 4 x Pro Licences (valued at $59 each) for 2d modular animation software Spriter to give away in this Thursday's GDNet Direct email newsletter.


Read more in this forum topic or make sure you're signed up (from the right-hand sidebar on the homepage) and read Thursday's newsletter to get in the running!


Planning - What do you use?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
18 replies to this topic

#1 bglanzer   Members   -  Reputation: 459

Like
1Likes
Like

Posted 23 June 2012 - 12:50 PM

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?

Brendon Glanzer


Sponsor:

#2 e‍dd   Members   -  Reputation: 2105

Like
-2Likes
Like

Posted 23 June 2012 - 01:29 PM

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


Python.

#3 L. Spiro   Crossbones+   -  Reputation: 14354

Like
2Likes
Like

Posted 23 June 2012 - 02:13 PM

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
It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#4 mark ds   Members   -  Reputation: 1485

Like
0Likes
Like

Posted 23 June 2012 - 02:17 PM

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.

#5 speciesUnknown   Members   -  Reputation: 527

Like
1Likes
Like

Posted 23 June 2012 - 03:02 PM

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.
Don't thank me, thank the moon's gravitation pull! Post in My Journal and help me to not procrastinate!

#6 bglanzer   Members   -  Reputation: 459

Like
0Likes
Like

Posted 23 June 2012 - 04:07 PM

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


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.

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.


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.

Brendon Glanzer


#7 M6dEEp   Members   -  Reputation: 897

Like
0Likes
Like

Posted 23 June 2012 - 11:43 PM

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.


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: http://blog.nuclex-g...s/uml-sculptor/

#8 Cygon   Crossbones+   -  Reputation: 1157

Like
1Likes
Like

Posted 24 June 2012 - 02:51 AM

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.
Professional C++ and .NET developer trying to break into indie game development.
Follow my progress: http://blog.nuclex-games.com/ or Twitter - Topics: Ogre3D, Blender, game architecture tips & code snippets.

#9 szecs   Members   -  Reputation: 2185

Like
0Likes
Like

Posted 24 June 2012 - 06:55 AM

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.


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, 24 June 2012 - 06:59 AM.


#10 speciesUnknown   Members   -  Reputation: 527

Like
0Likes
Like

Posted 24 June 2012 - 07:24 AM

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, 24 June 2012 - 07:27 AM.

Don't thank me, thank the moon's gravitation pull! Post in My Journal and help me to not procrastinate!

#11 szecs   Members   -  Reputation: 2185

Like
0Likes
Like

Posted 24 June 2012 - 07:31 AM

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

#12 Bregma   Crossbones+   -  Reputation: 5481

Like
1Likes
Like

Posted 24 June 2012 - 09:21 AM

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?
Stephen M. Webb
Professional Free Software Developer

#13 M6dEEp   Members   -  Reputation: 897

Like
0Likes
Like

Posted 24 June 2012 - 04:20 PM

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


I agree, with a bicycle you are building something out of assorted parts that are pre-designed to work together.. with software you are building something out of nothing. 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 different 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?

#14 szecs   Members   -  Reputation: 2185

Like
0Likes
Like

Posted 25 June 2012 - 03:10 AM

The one thing that I have trouble with and really want to know is how do you come up with multiple different 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?


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, 25 June 2012 - 03:12 AM.


#15 L. Spiro   Crossbones+   -  Reputation: 14354

Like
0Likes
Like

Posted 25 June 2012 - 08:54 AM

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:

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

Mathematical problem solving is always 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
It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#16 Fredericvo   Members   -  Reputation: 483

Like
0Likes
Like

Posted 25 June 2012 - 12:41 PM

I tried starUML today but I found it didn't take care of arrays well.

#17 andrewoid   Members   -  Reputation: 127

Like
0Likes
Like

Posted 25 June 2012 - 01:20 PM

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

Cacoo/UML (https://cacoo.com/) - 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.

HTC Flyer/Tablet - 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, 25 June 2012 - 01:21 PM.


#18 tharealjohn   Members   -  Reputation: 451

Like
0Likes
Like

Posted 27 June 2012 - 06:38 AM

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.

jmillerdev.com

Follow me @jmillerdev


#19 kseh   Crossbones+   -  Reputation: 2205

Like
0Likes
Like

Posted 27 June 2012 - 12:31 PM

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.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS