superman3275

Members
  • Content count

    481
  • Joined

  • Last visited

Community Reputation

2061 Excellent

About superman3275

  • Rank
    Crossbones+
  1. Hello everyone. This post should be pretty long (and heavy). I feel that this mistake is being caused largely by the more seasoned developers on here using the wrong words to describe how to pre-visualize. This led to me making a large amount of mistakes in software development and has made me scrap so much code. So, without further ado, I present to you: The Importance Of Pre-Visualization Many a beginner on gamedev.net (including me) has trouble with their software in the beginning. I had no idea how to plan for projects or what was even included in projects. I would look for posts about how to plan out projects. Generally when these questions get ask the seasoned developers on here (Also known as people who have worked on many finished projects) answer with responses like: I have a really iterative design I don't really pre-visualize, I try to sort out more details at implementation Now, that's not to say these developers are in the wrong at all. For a beginner however, these terms can be very daunting and confusing. For me, I thought I shouldn't really pre-visualize at all and that everything would sort itself out eventually (Boy how wrong was I). In this article I plan to explain to you how I pre-visualize my projects, how much you should really be pre-visualizing, and why it's important. So let's jump right in with the third one: Why Pre-Visualizing Important? Pre-Visualizing allows you to plan how your classes interact. Imagine this: In many projects, your Collision and Physics interact, and almost all of your classes have to access a singular Map for the level you're on. How they will interact and how the map will be handled must be thought out so that the code you write at the beginning will be prepared for how the other classes use the Map. This must be sorted out in pre-visualization because you write certain code (classes) at different times, which means if you don't think about this you'll end up re-writing enormous amounts of code. Pre-Visualization also defines project scope. Knowing what you plan to accomplish and what accomplishing that includes helps with development (For one thing, you will be able to gauge your progress and define what needs to be done next). When making a Side-Scroller, understanding the scope of the enemies A.I. is important so you'll know the work involved. If you make simple A.I., you can compensate with adding bows to a Side-Scroller that was originally only going to have swords. Now that I've made that analogy however, let us move on to another important topic involving why pre-visualizing is important: Understanding the Mechanics of your game. This ties into project scope. The mechanics are part of project scope because the more complex the mechanics the more time it will take to implement them. Imagine this: Having a Bow involves a lot more coding (Handling projectiles shot, their collision, how fast they move, animation for them, etc.). So at project scope, you define if you'll have a bow or if you'll only have swords. This lets you only plan for swords. The first part of planning should always be defining your scope. Now on to the second part: How much you should be pre-visualizing. My general rule is figuring out your hierarchy and how your classes will interact, however I leave out the actual coding details. I know how to code, and a large part of my actual software-design is figuring out how to solve problems or thinking about the best way to solve a problem. Figuring out what those problems are and how you'll solve them is pre-visualization. Actually planning out my code, what my functions will pass in, etc. shouldn't be defined in pre-visualization (Except for small, single-task programs like converting one form of a linear equation to another form.). Solving these problems before you start coding make sure that all the code you right already had that problem in mind (So when a problem turns up or when you are implementing something, you don't have to scrap existing code). Some problems are bound to be encountered while coding, and trying to write down and fix every minute detail of your program is an example of bad pre-visualization. You can't anticipate everything, however anticipating what you can (AKA the bigger problems and ideas) will help exponentially. Now, what you've all been waiting for: How do I pre-visualize? It's simple really. I get a notebook, write down the name of my project. I define the scope, the mechanics, and then take one or two pages in the notebook I label "Classes". I figure out the basic classes and write down their responsibility (Defining responsibility make sure you understand what all of your classes are actually supposed to be doing). Then, I take maybe a page for each class or important mechanic and think about it hard. I think about how it'll handle it's responsibilities and how it will interact with other classes. The key word here is interaction. Interaction is a huge part of software design (Especially video game software design.). This allows me to anticipate the basic structure of my code and the problems I'll run into. Then for a day or two I'll read over what I have and reflect. After I do this, I take my journal to the computer and start coding. This whole process is one to two weeks. The main point of this article was to stress how important pre-visualization is to beginners. Now, it might just be tic-tac-toe, however still get in the habit of pre-visualizing. It'll pay off in the long run. If you enjoyed this article, please post down below. If you have any recommendation about how you plan or any corrections, feel free to share them with everyone. Cheers :)!
  2. Vim Editor?

      there is a very good chance they have been exposed to more different environments than somebody with less experience. I would say that it is the guy with less experience that is claiming to "innately"  know more about editors here ;)   I'm really getting sick of how condescending you're being to me. I mean, that whole giant "drama-queen" post spelled it out for you: We get it, you think know more than everyone else, whatever. Bring yourself down to everyone else's level (or whatever works for you), because it's making you sound like an asshole.   Anyway, you get my point, no need to pick out a single sentence and respond to it. Why not try actually addressing my point, rather than taking a single sentence (out of context) to make me sound dumb.
  3. Vim Editor?

      at the end it's up to you what to do with opinions from people that have more experience. Personally I value those very much, and that is why I had my fair share of wasted days trying to get all these super-editors (emacs, vim, sublime, lately atom) to do something I could actually use to make my work better.. and all I ended up was wasted time... But I still did it because many devs that I respect seem to rave about it. So, unless you are working for an employer that has established tools, just use whatever you want.. as I've said.. nobody really cares.   I don't care about the editor thing. Nobody else really cares. It's just a discussion.   I guess some of these people may "have more experience" (in editors? you're being pretty unclear), and that's fine. But that doesn't mean that everything they say is right, or that I can't argue with them, or that my opinion doesn't matter. And that's what you were implying.   Also, do you really think people "who have more experience" innately know more about editors or something? I'd get it if we were arguing about something like statically typed vs. dynamically typed, then "developer experience" would matter, but regarding editors, it's not like you realize that one editor is better than another with experience, it's mainly just a personal thing (that doesn't mean you can't have a discussion / argument about it though).
  4. Vim Editor?

      look.. you are the one that dismissed a guy that took his time trying to explain WHY when the project becomes bigger the tools start to become more important, with a one liner: "You don't get the point of vim at all, do you?".. and now you're turning all drama queen on the entire forum? what's wrong with you man?   I've worked with big projects, I get that the tools are important. What I meant was, all the stuff he mentioned is great and all, but people like Vim for other reasons which have nothing to do with search and replace (which is pretty much all he talked about). And I did a one-liner, and then immediately edited it explaining why. Go look at my justification for saying that.   The point is, people make comments like the one you did all the time here (maybe not all the time, but I do see it around once a week), and I personally find them very stuck-up and useless.
  5. Vim Editor?

      I know it might sound revolutionary but I'll drop it here anyway. Why don't you make a kick-ass game using whatever tool you think is "superior" instead of trying to look like the cool kid on a forum just because you think using X is cooler than using Y, and that anybody who doesn't get how cool you are is "just not getting the point"? Really mate, use whatever you want.. nobody cares... it doesn't seem like you have much to show at the moment. I'd be careful before bragging about "superior" tools and spend more time coding than on the forums.   Many professional devs answered the same way trying to point out the same things.. instead of trying to learn from people with more experience than you, you dismiss them (us) with "we don't get the point"? I understand you want to sell your stupid t-shirts. but that really doesn't make you look like a person really interested in learning something.   This whole posts air of superiority is kind of sickening, but I'll bite. (And please don't say my comment had an air of superiority, because I had a real point. Vim is good for other reasons than the poster mentioned, and I was trying to point out that you have to look a little deeper before declaring that one editor is better than another).   I think I've made some pretty kick-ass stuff. Although I haven't focused on making games for a little over a year (I moved onto other stuff), I still like coming to this forum, because, believe it or not, I've been freelancing for a little over a year, and I make a decent amount of money from it.   Do you think this is a "learning thread"? It's not, really. What do you expect me to do? Say "Those people use VS, thus VS is the best. I will use it from now on." I used VS for a long time myself, and I think it's good for some things, but not very good for other things. Everyone's discussing their favorite editors, and I think it's a constructive discussion, but come on. I'll repeat it, I used Visual Studio Express for a little over two years while coding in C++, I then used PTVS (Python Tools for Visual Studio) for a couple months, switched to Sublime, and now I use Vim. I've used most of the editors people are mentioning, which is why I think I'm perfectly obliged to comment about which ones are better.   Anyway, on to the kick-ass stuff I've made (since I guess you feel like you're such a better developer than me. I'm totally just some kid, it's not like programming is my job or anything. Does it make you feel better about yourself to call other people you disagree with kids?):   I made DarkPython, which as a editor / debugger focused on improving programming education. The main challenge behind it was the debugger, which I implemented using BDB. It executes code line-by-line, highlights what line you're on /  you're about to be on, displays the state of all variables as the program progresses, and helps you fix errors. The debugger had to be multithreaded, which led to some complications with subprocesses (this is actually why I decided to use BDB).   I'm one of the contributors on the massively popular 2048 game. I've also contributed to Gspread and some other open source projects. I single-handedly created FlappyKivy (in eight hours) to show off the Kivy library, which I believe is great. I programmed a custom map format, map editor, and map renderer (all of which are open-source) in Pygame, and then implemented them in an (albeit crappy, but it was just an example) small game called Hooded.   I programmed a bot using PRAW which monitors comments on a popular GiftCardExchange forum and helps detect spammers (this is actually what led me to do some work on Gspread). I also programmed my personal website, which utilized a little bit of Javascript / jQuery.   I've done a lot of stuff professionally, such as programming a information-packed graph renderer / log parse. I later converted that program into a website, which is now heavily used.   I also have done a lot of work with PySerial recently, and in fact there have been some national press releases about vending machine work I did (I can't go into much more detail because I signed NDA's). I've also programmed some stuff which parsed videos and generated GIFS, which were then uploaded to a Rackspace CDN using turbolift.   So, yeah, I've made some kick-ass stuff (with vim). You can check my Github if you want.   This "professional devs" club that you're apparently a part of sure sounds like a group of assholes (if they're all like you are). I don't think I even really want to be in it, honestly. But then again, I'm just some "kid" who has so much to lean from you. Please, give me some more special "professional secrets".   PM me if you want to see my resume, just in case you don't believe me (because I'm just some "kid").   You know what, this is the whole reason I stopped coming to this forum. Assholes like you who think they're so much better than everyone else. Do you just assume everyone you disagree with is a twelve year old or something? I'm out of this thread and this forum. I'm completely sick of this, there's way better communities out there.   EDIT: I got kind of mad, and I'm not really out of the forum, per se (although I doubt any of you care).
  6. Vim Editor?

      I don't consider "leanness" a virtue in and of itself.  In most Unix workflows, that works because of the composability of tools.  However, an editor is an endpoint.  You can't really pipe vim to anything useful.   vim is great when I need to work over a terminal, or when I need to make a small change and know exactly where it is.  I can do all that before VS even loads.  In practice though, I usually have my IDE open most of the day, so that cost diminishes to basically nothing.   The problem with vim is that the workflow doesn't really represent a programming workflow, at least not in any programming language I've ever seen.  Sure, I can open a file, drop down to line 325, delete the next ten lines and then replace every instance of 'foo' with 'bar'.  NONE of that is usually what I want to do.  I don't care about line numbers unless I'm following a debugger or compiler errors, and VS lets me just jump to that line by clicking.  I usually care about going to a certain method, and again VS has me covered in the solution explorer.  vim?  Uh... search until you find it?  On the same token, VS has the amazing F12.  vim?  Search.  Deleting blocks of lines?  I guess it's okay in like 5% of my use cases, but the other 95% typically involve smaller-scale changes.  I don't even need to bring up the huge penchant for off-by-one errors with 'y' and 'd' because of its weird counting scheme (i.e. d5<enter> deletes 6 lines).   It's VERY rare that actually want a global find/replace.  Sometimes you want to do it in selection, and that's often typing stuff like replacing int with int32_t or something.  When you're messing with identifiers, you almost never want to do raw text replacement.  You want to refactor->rename.  vim?  No can do.  It's "lean" out of the box.   I'll admit vim has some impressive plugins out there (YouCompleteMe immediately stands out), but they still don't even come remotely close to what VS offers.  For writing code, nothing beats a good intellisense implementation, and VS has the best I've seen.  However, it's reading code where IDEs start getting crazy.  Go To Definition and View Call Hierarchy are absolutely critical.   You don't get the point of vim at all, do you?   Those aren't the reasons why people recommend Vim. You can also jump to that line by clicking in vim, but the whole point is that it's faster to not move your hands from the home row. Vim also let's you jump to a certain method. Vim has lots of great small-scale change commands (the whole reason people use Vim is for it's fast editing). I don't know where you got the idea that you can't refactor / rename methods in vim. Vim also has a form of intellisense, albeit not as good as VS. There are plugins which are as good as VS though.   All the stuff you mentioned is possible in Vim, but it just takes a little bit more time to learn.
  7. Internet Explorer 11 Debacle

    Sure.   That's totally what happened...   Are you trolling? People at the NSA could care less about screwing with you, same thing with Anonymous.
  8. Python IDE

    I like PTVS for big projects, but for someone learning Python it will be a bit much.   It's what I started using when I started learning python. The OP says he's got 7 languages under his belt already, so I assume he can learn quickly It only took me a day to get up to speed with it.   To each his own I guess :).
  9. Python IDE

    I like PTVS for big projects, but for someone learning Python it will be a bit much.
  10. Python IDE

    It's a random app. The OP wants an IDE he can write code on from his computer, not an Ipad app (even if you think it's an IDE).
  11. Python IDE

    This isn't true, MS Visual Studio 2013 are just IDE's, not Compilers. Code::Blocks will use whatever compiler you tell it to. IDE's don't include Compilers. (Also, I accidentally upvoted you while trying to downvote you, so that's why you got upvoted). He's asking for the best Python IDE"s, not for random ipad apps which you can write Python in.   I think the best beginning IDE is Sublime Text, because it's fast, extensible, and wrote in Python itself (not to mention that it looks great).
  12. Internet Explorer 11 Debacle

    Then how you would explain it then? When 3 large security flaws are found in 3 pieces of open source software? (or 2 pieces of software if you want to bundle the two Android problems together).   It just means there were bugs found in code. That happens with all software.
  13. Internet Explorer 11 Debacle

    Here's the problem with your argument: Open source software didn't "cause" these security problems.   You cited three isolated examples of when there were bugs in open source software, and then implied that Open source software has more bugs and is worse than proprietary software. And you then went on to say that "Open source software ... caused large security problems", which is obviously untrue.
  14. Internet Explorer 11 Debacle

    This should help you understand.
  15. Vim Editor?

    I'm talking about code navigation features that actually understand the language that you're using, across massive code-bases, potentially made up of multiple libraries and millions of lines across thousands of files. e.g. Find references - create a list of all lines that use/interact with a particular member variable/function, type, macro, etc... Go to symbol - type a filter (e.g. "text m_" to find any symbol that contains both 'text' and 'm_' in it's name, such as "TextBox::m_width"), and create a list of lines that declare that variable, global, function, type, macro, etc... Go to definition - jump to the line that defines the symbol under the cursor, or alternate between declaration and definition of a function. View call hierarchy - show a tree of calls to/from a function. Rename - change the name of a symbol across the code-base - e.g. change all interactions with TextBox::w to TextBox::m_width, while all instances Rect::w are left as is.   Well, you do have to install plugins for these features, but keep in mind that default vim is very lean.