[ 13 posts ]  Reply to topicPost new topic 
Fangaming FAQ, Last update: August 7, 2011
Author Message
 [at]
 Post subject: Fangaming FAQ
PostPosted: Fri Nov 19, 2010 5:37 pm 
Real horses don't run into trees
Member
[*]
[*]
[*]
[*]
[*]

[*]
[*]
[*]
[*]
[*]

[*]
[*]
[*]
[*]
[*]

[*]
[*]
[*]
[*]
Are you new to MFGG? New to game making? Then you've clicked the right link.
So please read through these before making topics like "How do I make a game?" and "Can you make me a Mario game?"


Question: What is a fangame?
Answer: A fangame is any video game that is based on an existing franchise.
Important is, that whenever you create such a game, it is illegal to sell it as the respective company (in case of Mario Nintendo) owns the rights to the characters/gameplay/scenario/etc.


Question: Can I sell fangames?

Answer: No. As said above, the rights to fangames belong to their respective creators and as long as you don't pay a huge licence fee, they will not let you do that.
Creating fangames is just for fun, not for profit.


Question: Can I sell original games?

Answer: That depends on the licence of the game making utility you're using.
e.g. Game Maker (registered version) allows to sell your games (if they are 100% made by yourself or you hold the licence for everything that is in the game, including sounds, graphics, scenario, etc.). However, RPG Maker 2000 will not let you sell any games legally.


Question: How can I make a game?

Answer: To create a game, you can go for basically three different ways.
There are programs that have finished engines and with a little drag & drop you can make your "own" games in relatively little time. Examples: upcoming Stencyl or RPG Maker series. When using such programs, keep in mind though, that you do not have a lot of freedom in terms of programming new elements to the game (or in case of Stencyl you'd need to learn Java)

Then you can also use programs that are made for game making, like Game Maker or MMF(2). These programs allow you to start with a drag & drop interface, but also give you the opportunity to use built-in scripting languages to get a very high range of custom elements. Getting one of these programs is probably the best step towards game making.

The third option is to learn an actual programming language, like C, C++, Java, etc.
You should probably not start with these though, and if you're not intending to become a professional programmer, you might find the previous group way more effective.
The freedom you have in these languages is incomparable to the others though, as you can do basically everything, depending on your skill level of course (which must be rather high here)
Links to relevant topics:
Game Making List


Question: I want to make a game, can you program, sprite and do sounds for me while I lean back and control your steps even though I know nothing about game making?

Answer: No. Common sense should tell you the answer on this already, but we get topics like this every now and then, so it's rather frequent that this question is asked, so it's here anyway.
Still I will explain why not: people here have worked hard for their skills in programming, spriting and other things. If you have skills yourself, people will probably like to form a team with you, but if you just want to "direct" others, it will most likely not work.
Sorry, but to make good things, you need to put effort in them.


Question: I have [insert any game making utility here] since yesterday, still I can't create a Super Mario 64 clone, what can I do?

Answer: There is luckily no program that makes one an excellent game maker over night. Even with a simple drag-and-drop program, you have to learn some game making basics to make a decent game.
I for my part have been using Game Maker and other languages for longer than I think now, and I'm still not perfect. Others with similar skill will tell you similar things, regardless if you work with GM, Klik, C++, Java, Lua, RPGMaker, or anything else.
When you want to enter the game making community as a programmer, spriter or whatsoever, you need to know that you need to spend time and effort to learn things.

The bottom line of this is: If your first game is not the next Smash Bros., just don't give up. If you do, game making is either not the right thing for you or you used the wrong methods.
Find your personal way, ask people for help and you will also be able to mount the staircase of game making step by step.


Question: So, how do I get better at game making?

Answer: My best suggestion is to get yourself tutorials for your game making utility of choice. Usually you can find them all over the net, made specifically for you (the beginner). Tutorials teach you the basic logic of your program and soon you will be able to create your very own games (which will first suck, but you will get better as you practice, practice, practice).

Take part in game making competitions, such as the Minigame Competitions on MFGG. They limit you both in time and gameplay, so you get the chance to try something completely new without getting lost in a huge project. They teach you time management, efficient programming, dealing with restrictions and more.

You might also take a look at the following LINK LIST (that will be constantly updated):
Game Maker tutorials page, the first link here is a little essay named "What is a good game?". It is unrelated to Game Maker, but refers to game making in general. You don't need to be a beginner to learn from it either.
GML Beginner's Guide By RetroXYZ. If you use GM and GML looks complicated to you, this might help you.
MMF2 Tutorials - If you use MMF2, you should check this out.


Question: Can I post non-Mario games in here?
Answer: Yes. The fangaming board is for all kinds of fangames, including (and putting focus on) but not limited to Mario games. You can even post original games (ones that you hold all rights to yourself, since you made up all the characters/locations/scenarios yourself), also known as indie games.


@ALL MFGGers: If you have any ideas for questions that are not in the FAQ, please let me know. I'd like this FAQ to be as helpful as possible for every beginner who comes here, and it'd also be nice if this topic could help more advanced members too with a good link list.

_________________
Guinea 2013 Reference (1) | 11 (1) | 10 (1) | 08/09 (1, 2)
 
Top
Offline 
 User page at mfgg.net
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Sun Aug 11, 2013 12:23 pm 
User avatar
Always got a bone to pick
Member
[*]
[*]
[*]
[*]
[*]

[*]
[*]
If I may contribute...



I want to learn programming. How do I start?

Although you can easily find tutorials and documentation for any given programming language online for free, programming is a very difficult thing to learn because it is a difficult thing to teach. Every person also thinks differently, and so some approaches to teaching won't work for you.

Programming also heavily encourages convention, which are practices that aren't technically required but are advised. This is so that most people program the same way and their programs will be compatible if they form a team and try to work together. These conventions may be very confusing or even entirely arbitrary.

A good idea is to start by understanding the basics of programming itself, which can be started off by learning what each language is called and what the differences between them are. You will need to understand basic concepts such as low- and high-level languages, variables and fields, dynamic and static typing, operators, methods and functions, and the difference between evaluation at runtime and at compile time. And about a hundred other things that will be easier to understand than they look if you get those other things down.

Find a high-level "scripting language" - one that doesn't have to be compiled to work - which will likely be merciful if you make a mistake in it. The advantage is that you will learn basic programming theory and many concepts global to programming without having to worry about basic technical things such as memory management and compiling, as well as scripting languages being generally simpler and easier to learn. The disadvantages include that scripting languages are much less powerful than "true" programming languages, and that many important programming concepts such as static typing usually don't apply to them, so be ready to learn new concepts when you move to a more advanced and involved language such as Java or C.

An excellent place to start to learn the basic way a program works is Quest, a text adventure development suite that lets you switch your code between a Clickteam-style list of events and technical code on the fly (unless you type in code that can't be understood.) This will help you understand the layout of a program better by allowing you to create events in the click view and then look at them in the code view, or vice versa. It also has a full documentation available of every command and function.

Keep in mind however, that programs such as Quest and GameMaker, while allowing you to script yourself, do a lot of the footwork for you. When you move to a real programming language, you will not have things defined for you like game physics, save file formats, passwords, or graphics.

Some common languages:
- C++ (tutorial) - Compiled - A very low-level language, meaning you should probably not try to learn it if you know absolutely nothing of programming. Pretty sure your program also needs to be retooled for each system you port it to.
- Java (tutorial) - Compiled - I'd rate this as a mid-level language. It runs on a virtual machine, meaning you can program the game once and distribute it on Windows, OS-X, or Linux with little to no change. This also lets it run in the command line, directly from a double-click, or within a web browser. Lacks an unsigned variable type, but you can bypass this with some wizardry. Minecraft is coded in Java and many indie developers like the ease of porting it to multiple systems.

Languages that need some specialized knowledge and/or setting up:
- PERL - ? - I am not familiar with PERL, but I believe it is frequently used for web pages.
- PHP (tutorial) - Serverside Script - Learn HTML before you get into this; it's is used primarily to make complex web pages. MFGG and its message board are programmed in PHP. To use PHP, you need to have at the very least a web host and the PHP interpreter, with the option of an SQL database (MySQL is best), but you can run a web host (Apache recommended) on your own PC; if you have a router or otherwise block incoming on the web port, no one will connect to you. PHP's advantages are that it is incredibly intuitive and has a full documentation available. Its disadvantages include inconsistency in naming functions and some other stuff I haven't quite gotten into myself.

_________________
Image

Image Image Image
 
Top
Offline 
 User page at mfgg.net
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Sun Aug 11, 2013 6:19 pm 
User avatar
C# Programmer
Member
[*]
[*]
[*]
[*]
Fibriel wrote:
Programming also heavily encourages convention, which are practices that aren't technically required but are advised. This is so that most people program the same way and their programs will be compatible if they form a team and try to work together. These conventions may be very confusing or even entirely arbitrary.


Most conventions are created so code becomes more consistent and easier to read and understand. Most people don't program the same way, despite being a beginner or expert. Everyone has their own style. Teams may use conventions but they aren't forcing each other to program the same way. I've been programming for a little while, and I haven't really used that many conventions besides naming conventions. But even then that is really just my preference. I'd like to know about the confusing conventions you've come by.

Quote:
A good idea is to start by understanding the basics of programming itself, which can be started off by learning what each language is called and what the differences between them are.

This has nothing to do with understanding the basics of programming. As you said, it only teaches you what the differences between languages are. The differences shouldn't matter to a total beginner.

Quote:
You will need to understand basic concepts such as low- and high-level languages,


As a beginner, you don't have to understand the concepts such as low or high level languages. That's just detail that a beginner should'nt be concerned with.

Quote:
and the difference between evaluation at runtime and at compile time. And about a hundred other things that will be easier to understand than they look if you get those other things down.


Again, these are details that shouldn't matter to a beginner. I'm not trying to offend you at all, but everything you're saying about programming makes it sound scary. It's not. Programming is simply problem solving, whether you do that through Drag and Drop, speech-to-text or actual text/coding. Most of what you mention aren't fundamental to programming.


Quote:
Find a high-level "scripting language" - one that doesn't have to be compiled to work - which will likely be merciful if you make a mistake in it.


I understand what you're saying but it sounds like you're implying that languages that require compilation are hard to work with. Find a good IDE that includes a good debugger. I use visual studio express from microsoft and it is great. I can stop code whenever and wherever I want. If the program breaks, the debugger stops at the place it broke and gives me an error message. I can fix it right then and there if it's not too complicated and continue on debugging.

Quote:
The advantage is that you will learn basic programming theory and many concepts global to programming without having to worry about basic technical things such as memory management and compiling,


Even if you don't choose a scripting language, you don't have to worry about memory management and compiling with every real (as you put it) language. Again, choose a good API and IDE that does this for you.

Quote:
as well as scripting languages being generally simpler and easier to learn. The disadvantages include that scripting languages are much less powerful than "true" programming languages, and that many important programming concepts such as static typing usually don't apply to them, so be ready to learn new concepts when you move to a more advanced and involved language such as Java or C.


I wouldn't call static typing a concept, it's more of a syntax thing. As you become a better programming, specific syntax and semantics are the easiest to learn. I'm sure you've heard that after you learn one language, learning another is easy. They're right. After learning one language, you develop certain skills that carry onto other languages. I should point out that programming is problem solving, how you do it so is totally different (through a programming language, game maker, construct).

-Oh yea, I wouldn't start a beginner off with low-level languages like C. You don't have to learn every language. If you only need to know one, then thats great.

Quote:
Keep in mind however, that programs such as Quest and GameMaker, while allowing you to script yourself, do a lot of the footwork for you. When you move to a real programming language, you will not have things defined for you like game physics, save file formats, passwords, or graphics.


Although you're right about not automatically having these done for you, many people have done so already. If you don't want to make a physics engine, file saving/loading system, or graphics engine, then don't. You're not forced to. Again, you're making programming sound scarier than it really is.

I'm sorry if it sounds like I was trolling, but I'm just trying to help clarify some things. I began learning how to program simply by reading a book and googling. It didn't make me a programming guru when i finished reading it, but it provided me with what i needed to learn- the fundamentals to get me started.

_________________
MFGG TKO (scrapped) - Animations
Image
"It feels that time is better spent on original creations" - Konjak
Focus on the performance, the idea, not the technical bits or details - Milt Kahl
 
Top
Offline 
 
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Sun Aug 11, 2013 7:49 pm 
User avatar
Always got a bone to pick
Member
[*]
[*]
[*]
[*]
[*]

[*]
[*]
Allow me to clarify.

Convention includes demands that specific powers of the language are only written in a specific syntax and used in specific ways despite different syntax or use being usable and stable. That is to say, convention is "good form", and that is expected of every programmer.

By understanding the difference between programming languages, the user understands what those differences mean. Those meanings are global to programming (I should think memorizing the common variable types such as byte int etc. would be pretty important) and are knowledge that will be useful and valuable regardless of the language selected, and as such, ought to be the first things covered. If you select a language that has static typing, you are damn well going to need to know what static typing is, and if you don't - it would be a good idea for you to know ahead of time that your language's dynamic typing is not the case with every language. Bonus if you learn to pretend your language is statically typed so that you develop the practice of not relying too much on dynamic typing (which where available can still cause ambiguity and major problems.)

Quote:
I understand what you're saying but it sounds like you're implying that languages that require compilation are hard to work with.

That's because they are much like a labyrinth; complicated and full of distracting scenery and potential pitfalls. A beginner doesn't know the way through and will spend ages figuring it out - seasoned programmers have been here many times before, they remember the way, and so can travel through it much faster and better adapt when the ***hole dungeon master changes the layout a little bit.

(If that comparison was a little too fanciful I apologize. The point is that they are a ***** to learn but relatively easy to use afterward.)

Before even programming anything, there exists a much larger number of technical concerns outside of your code itself. You have a new choice of which of up to several dozen compilers / debuggers / IDE's to use with little to no useful information on their strengths and weaknesses, must make sure they are all set up both to your convenience and to actually still work, and must make sense of the compiler itself (which may not actually be a compiler and may have several functions besides that one would also do well to learn.)

In addition, many compiled languages, mostly low-level ones, must be compiled differently and separately for every target platform. More likely you will have to reprogram it for each platform. The higher-level the language, the more cross-compatible it is. Best to ask the beginner to make one program, not three!

Languages that are compiled are generally more powerful and complicated (being lower-level), meaning your mistakes will be a lot bigger and there will be more of them. Even when you're not screwing up, you're either prowling through the standard library / Internet to find the support for what you want, if indeed it even exists, or trying to program it yourself; either way, you aren't even expected to mention the sound driver in a high-level language and must still remember to account extensively for it in a low-level one, even if that accounting is merely copying the way someone else does it via library; you still have to remember that memory management is now a manual issue, and you have to know how your language by default converts numbers to strings and ints to shorts, and how to fix these things in the event there is a problem. Or even to recognize what the problem is, for that matter.

With a high-level such as a scripting language you don't have to worry about any of that crap, making it a good beginner's choice. Chances are good there's one interpreter - the one you got from the language's official page - and that's it. You type it and run it and see what it does; if you make a mistake you can see it right in the output instantly, and any mistakes that do not cause the script to abort (i.e. are bad ideas as opposed to syntax errors) are unlikely to cause any major damage as you will not be working on as deep of a level.

Once someone understands the basics of programming courtesy high-level languages and passes the initial hurdle of constructing a language so that it compiles functionally and neatly, there is no great secret to a lower-level / compiled language.

Java has been pretty good to me in that I do not have to make those environmental decisions. There's one official JDK with an official compiler and an optional IDE I don't use; for the most part whatever I make in it should run on anything at any time assuming I don't screw it up by my own faults; that's it.

Quote:
I wouldn't call static typing a concept

I find that bewildering.

dictionary.com wrote:
con·cept [kon-sept] Show IPA
noun
1. a general notion or idea; conception.


Anything that can be fathomed in the human mind, especially where it does not tangibly exist, is a concept - any understanding or perception.

Programming languages rely on these understandings and perceptions taking root in the programmer's mind. Everything in a programming language is a concept.

Quote:
Although you're right about not automatically having these done for you, many people have done so already.

Higher-level programming generally don't rely as heavily on library inclusions as compiled languages because it's easier and faster (note I did not say better) to get things done in it anyway - much of a lower language's library features such as driver interface and type conversion are implicit in the higher language's normal commands and methods, both lowering the need for libraries at all and rendering any standard library that exists more sufficient. This is yet another complication with lower-level languages - a greater need for libraries to speed up "basic" things taken for granted in MMF or GameMaker like opening windows and interpreting files - that is ill-suited for a beginner because they won't know what the hell is going on. They can only fully understand a library by opening it up and looking through its code themselves. If they don't want to do that they can check the documentation or experiment with the library to estimate its mechanics. But they can't make heads or tails of any of this if they don't already have some programming background to arm them.

By using a scripting language the learning programmer will be eased into programming because they will not immediately require invisible code they can't see and thus can't understand. In C++ for instance you have to include a library just to output something to the user, which is not so with a higher-level language.



It is my understanding that most professional programming uses more than one language, and uses the highest-level one that is sufficient for a task specifically because lower-level ones are harder and more tedious to work with. Mostly, it's faster to use the higher-level one, and a professional project is on a tight schedule; but everyone could do with some saved time.

_________________
Image

Image Image Image
 
Top
Offline 
 User page at mfgg.net
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Sun Aug 11, 2013 11:10 pm 
User avatar
C# Programmer
Member
[*]
[*]
[*]
[*]
Fibriel wrote:
By understanding the difference between programming languages, the user understands what those differences mean. Those meanings are global to programming (I should think memorizing the common variable types such as byte int etc. would be pretty important) and are knowledge that will be useful and valuable regardless of the language selected, and as such, ought to be the first things covered.

Sorry for the previous misunderstanding. I do agree that understanding basic variable types like byte, int, etc are important. I thought you were talking about the actual differences between languages.

Quote:
If you select a language that has static typing, you are damn well going to need to know what static typing is, and if you don't - it would be a good idea for you to know ahead of time that your language's dynamic typing is not the case with every language. Bonus if you learn to pretend your language is statically typed so that you develop the practice of not relying too much on dynamic typing (which where available can still cause ambiguity and major problems.)


I still disagree with this in that beginners shouldn't have to worry about these things. Whether their used language is statically typed and another dynamically typed, it shouldn't matter. You advise beginners to start with a scripting language then to a different language. You haven't provided a good enough reason for this indirection. Your counter arguments include describing the complexities of low-level languages, but you totally forget about other non-scripting high level languages. This is the one of the issues I have with your advice.

Quote:
Quote:
I understand what you're saying but it sounds like you're implying that languages that require compilation are hard to work with.

That's because they are much like a labyrinth; complicated and full of distracting scenery and potential pitfalls. A beginner doesn't know the way through and will spend ages figuring it out - seasoned programmers have been here many times before, they remember the way, and so can travel through it much faster and better adapt when the ******* dungeon master changes the layout a little bit.

(If that comparison was a little too fanciful I apologize. The point is that they are a ***** to learn but relatively easy to use afterward.)


I think there is a bit of misunderstandings going on between us. Yes, some languages must be compiled before being used as a program. However, the beginner is not required to do so by hand or through a command prompt. Heck they don't even have to understand what compiling truly means. (That might've taken it too far) If they start off with a IDE similar to visual studio or Eclipse, all they have to worry about is pressing that menu button that says "Build" or "Debug" before their program is useful. IDEs like these are veery user friendly and no longer make compiling code a labyrinth.

Quote:
Before even programming anything, there exists a much larger number of technical concerns outside of your code itself. You have a new choice of which of up to several dozen compilers / debuggers / IDE's to use with little to no useful information on their strengths and weaknesses, must make sure they are all set up both to your convenience and to actually still work, and must make sense of the compiler itself (which may not actually be a compiler and may have several functions besides that one would also do well to learn.)


Again I respectfully disagree. Beginner's shouldn't get caught up with the pros and cons of a language or compiler. Pick up a book about any language and read it. It might even recommend an IDE or compiler to use. As a total beginner, the pros and cons of a specific language compared to others should be of little concern. Yes some languages are easier to learn than others. Chances are that the beginner did do some kind of research before jumping in. Hopefully, they don't choose a low level language like C or C++. Even if they do, and get overwhelmed, then they can try again and ask for better recommendations. A beginner's toughest obstacle should be to get started, not to compare the intricacies of the tool they're using.

Quote:
In addition, many compiled languages, mostly low-level ones, must be compiled differently and separately for every target platform. More likely you will have to reprogram it for each platform. The higher-level the language, the more cross-compatible it is. Best to ask the beginner to make one program, not three!


Yes, a beginner shouldn't have to redo a program 3 times just so it works on the target platforms....But again, they're beginners. Using a cross-platforming language should be one of the lowest priorities. They are just starting out and shouldn't be worried about if anyone else can use their (useless) program just yet.

Quote:
Even when you're not screwing up, you're either prowling through the standard library / Internet to find the support for what you want, if indeed it even exists, or trying to program it yourself;

Of course you have to read the documentation, how else are you going use your API to your advantage? This is true of any language. There's no getting around learning an API. This is actually an important skill that everyone should have.


Quote:
Java has been pretty good to me in that I do not have to make those environmental decisions. There's one official JDK with an official compiler and an optional IDE I don't use; for the most part whatever I make in it should run on anything at any time assuming I don't screw it up by my own faults; that's it.


There you go. Assuming you were a beginner, you didn't have to make those decisions as they were of little importance to you...Out of curiosity, if you don't use an IDE, what do you use to program in Java? How do you debug and deal with errors?

Quote:
Quote:
I wouldn't call static typing a concept

I find that bewildering.

dictionary.com wrote:
con·cept [kon-sept] Show IPA
noun
1. a general notion or idea; conception.


Anything that can be fathomed in the human mind, especially where it does not tangibly exist, is a concept - any understanding or perception.


Programming languages rely on these understandings and perceptions taking root in the programmer's mind. Everything in a programming language is a concept.


Ouch lol.Forgive me but I never formally learned the idea of "static typing". The fact that it even has a name is somewhat new to me. I *always just figured that I just (for the most part) had to declare the type I was using before actually using it.

*That was when I was beginning to learn c#. Even though I never learned what static typing was, it didn't stop be in the slightest. Really I didn't know what it was by definition until your post. I looked it up on stackoverflow and saw that it meant to simply declare a type before using it. In my mind, that was second nature and if anything did not seem like a programming concept, but more like a syntax rule. (You can argue that syntax is concept, but we have to constrain the word concept somewhere....Everything is a concept if you consider its definition without a constraint.)

Quote:
Quote:
Although you're right about not automatically having these done for you, many people have done so already.

Higher-level programming generally don't rely as heavily on library inclusions as compiled languages because it's easier and faster (note I did not say better) to get things done in it anyway


I would say that beginners should have a good understanding of the use of libraries. They are there to help the programmer, not make it complicated. In my opinion though, a beginner should not start with scripting mostly because it hides too much from them. To be clear, my only experience with the use of scripting languages is in game development. From what I've read, some advantages are to separate the actual core game engine from the "higher level" game code. (Not as in high-level language). It also allows the game to be more data-driven and so to a point more flexible.

Quote:
They can only fully understand a library by opening it up and looking through its code themselves. If they don't want to do that they can check the documentation or experiment with the library to estimate its mechanics. But they can't make heads or tails of any of this if they don't already have some programming background to arm them.


What? Nobody in any position has to look at how something is actually coded in order to understand how to use it. You use java and the official SDK. Did you go through its source code for each and every method you use? I hope not because you don't have to and shouldn't need to. If they are a beginner, they shouldn't be worried about how an image is loaded, only that is has been. I highly doubt they would be able to make heads or tails of anyone's source code. The majority of the average user's code is not well documented or coded. Their choices are arbitrary with little no clear reason of why they did what they did. I would advise beginners to stay away from or atleast be very careful when reading raw code of another. I would even go as far as to tell them to be careful when following a tutorial. I have read a lot of tutorials since I've started programming. Although very useful, they sometimes teach bad habits. The beginner would not have enough experience to know that the tutorial is doing something wrong. They take in all the good of it as well as all the bad.

Quote:
By using a scripting language the learning programmer will be eased into programming because they will not immediately require invisible code they can't see and thus can't understand. In C++ for instance you have to include a library just to output something to the user, which is not so with a higher-level language.


Scripting languages are not the only language that is high-level. C# and Java have libraries that must be used to atleast output to the command prompt. Learning to include and use libraries is pretty important. They learn that the API gives them some additional tools to use for their needs. I dislike how you are always using low-level languages like C++ as reason to only use scripting languages. The vibe I'm getting from you is that the beginner should start with a high-level scripting language. It is of no help to them if a function is available to them and all it supplies them with is a name (and maybe a summary). A function must supply its implementation code in order to be understood. This idea is what I highly disagree with. Java and C# are great languages for a beginner to start off with. They include some of the "complex" things that you argue, but it is not as bad for a beginner as you are portraying them to be.

*I've read over my post a few times. I apologize for any grammar issues you might find.

_________________
MFGG TKO (scrapped) - Animations
Image
"It feels that time is better spent on original creations" - Konjak
Focus on the performance, the idea, not the technical bits or details - Milt Kahl
 
Top
Offline 
 
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Mon Aug 12, 2013 12:47 am 
User avatar
Always got a bone to pick
Member
[*]
[*]
[*]
[*]
[*]

[*]
[*]
These replies are becoming much too long and off-topic for this thread.

The reason you start high and move low is the same reason children move from tricycles to bicycles to cars. It is too much too fast to shove a newbie directly into a low-level language. If you or someone you know has successfully done so without any prior programming experience they are the exception rather than the rule (furthermore such a claim is hardly believable.)

At no point did I (intend to) state a strict inclusive relationship between high-level languages and scripting languages, only that a scripting language tends to be a high-level language and is generally much easier to experiment and learn programming theory in.

Quote:
Beginner's shouldn't get caught up with the pros and cons of a language or compiler.

Of course they should on account of they have to pick one such language / compiler to use, requiring them to pick one that fits with their preferences and needs. This applies to experienced programmers and newbies alike.

Quote:
Out of curiosity, if you don't use an IDE, what do you use to program in Java? How do you debug and deal with errors?

I don't advise doing this, because most other people simply can't keep track of this much bullcrap. I can and I do.

I type it in a plaintext editor and compile it in the command line. No syntax highlighting, no debug other than what I add to the program myself, no nothing. The compiler tells me I screwed up, shows a sample of the mistaken area, and I go fix it. Or make it worse, depending.

Most people can't fix all these errors without some kind of help though, so an IDE is always a good idea for them. But I find an IDE bulky and tacky, I can't stand syntax highlighting because it gives me eye strain, and I eschew all that stuff for raw speed of coding.

I guess I'm sort of a berserker when I program stuff.

Quote:
Ouch lol.Forgive me but I never formally learned the idea of "static typing". The fact that it even has a name is somewhat new to me. I *always just figured that I just (for the most part) had to declare the type I was using before actually using it.

To be fair, I'm hardly familiar with which languages are and are not statically typed myself, but I believe in general, low languages are static and high languages are dynamic. This isn't a hard correlation though.

It is an important distinction because static typing isn't simply "define the variable type first" - it means you can't change that variable's type after it's been defined (and in my opinion you shouldn't do it even when it lets you.) I usually don't change my variable types anyway in say, PHP (which is dynamically typed) because I consider it poor practice, especially if I'm working in multiple languages and the other one wouldn't let me do that.

High-level language lets you do silly things like this:
Code:
var = 0; // You of course, don't need to define the type since the "0" makes it some numeral type or another. Probably defaults to short or int, I don't know.
switch(rand(1)){
  case 1:
    var = 1;
  default:
    var = "string";
}


And it will change the variable type at runtime according to the data in it.

But in a low-level language you are most certainly not going to be doing that. The variable type is determined the instant it is created and remains static for the duration of the program.

I usually see no reason to use one variable to hold multiple types of data and have no need of dynamic typing, but since a lot of "user-friendly" or "easy" languages tend to allow dynamic typing (PHP being one), newbies often get into the habit of it before they know better.

_________________
Image

Image Image Image
 
Top
Offline 
 User page at mfgg.net
 
 [gb]
 Post subject: Re: Fangaming FAQ
PostPosted: Mon Aug 12, 2013 12:26 pm 
User avatar
buy my lovely game
Member
[*]
[*]
[*]
[*]
[*]

[*]
[*]
[*]
[*]
[*]

[*]
[*]
[*]
Fibriel wrote:
If you or someone you know has successfully done so without any prior programming experience they are the exception rather than the rule (furthermore such a claim is hardly believable.)

Hi


And Squirrel's advice is not to use the internet for this sort of thing - go down the formal education route because a university course is a great deal better.

_________________
Image
 
Top
Offline 
 User page at mfgg.net
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Mon Aug 12, 2013 12:33 pm 
User avatar
Always got a bone to pick
Member
[*]
[*]
[*]
[*]
[*]

[*]
[*]
Black Squirrel wrote:
And Squirrel's advice is not to use the internet for this sort of thing - go down the formal education route because a university course is a great deal better.

Not really, but it is a great deal more expensive. Formal education is highly overrated; they teach you things in a standard jargon and a standard order that may be completely incompatible with your most efficient method of learning.

Self-teaching is always the best teaching because no one knows what you want to learn and how you need to learn it better than yourself; it's almost always free; and after you're done with your college course you're not done learning anyway.

You're never done learning, and you will need to learn to self-teach to get anywhere in programming anyway, so you might as well do it from the get-go.

_________________
Image

Image Image Image
 
Top
Offline 
 User page at mfgg.net
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Mon Aug 12, 2013 1:25 pm 
User avatar
C# Programmer
Member
[*]
[*]
[*]
[*]
Whoa. That's exactly how I feel about college and learning! I mean I have no experience with college (yet...I'm applying to some right now), but I do strongly feel that I can learn whatever I need mainly through reading books and using the internet. Everything I know about programming is self-taught. I plan to read quite a bit of math books by myself which include linear algebra. -I also plan to try and skip a few college courses this way...No need to pay anyone to read a book to me.

_________________
MFGG TKO (scrapped) - Animations
Image
"It feels that time is better spent on original creations" - Konjak
Focus on the performance, the idea, not the technical bits or details - Milt Kahl
 
Top
Offline 
 
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Mon Aug 12, 2013 2:00 pm 
User avatar
Always got a bone to pick
Member
[*]
[*]
[*]
[*]
[*]

[*]
[*]
TheShyGuy wrote:
Whoa. That's exactly how I feel about college and learning! I mean I have no experience with college (yet...I'm applying to some right now), but I do strongly feel that I can learn whatever I need mainly through reading books and using the internet. Everything I know about programming is self-taught. I plan to read quite a bit of math books by myself which include linear algebra. -I also plan to try and skip a few college courses this way...No need to pay anyone to read a book to me.

I will concede however that a standardized education makes it much easier to illustrate to prospective employers or partners that you're competent in the field you're applying for, since you have a certificate from a respected authority on the matter, and that it is much more difficult to "show them" by simply doing a good job in your work in general.

_________________
Image

Image Image Image
 
Top
Offline 
 User page at mfgg.net
 
 [gb]
 Post subject: Re: Fangaming FAQ
PostPosted: Tue Aug 13, 2013 2:15 pm 
User avatar
buy my lovely game
Member
[*]
[*]
[*]
[*]
[*]

[*]
[*]
[*]
[*]
[*]

[*]
[*]
[*]
Despite the many emotional claims it will make in its defense, the internet is not currently in a fit state to teach when it comes to programming. It can only guide you towards things, and even then it's not a bastion of reliability. Far better to hear it from people who are qualified in an environment where you're not avoid completely isolating yourself from the outside world. Particularly if you plan to make some sort of career out of it, because (spoilers) life isn't all about lines of code.

There are more benefits than you think.

_________________
Image
 
Top
Offline 
 User page at mfgg.net
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Tue Aug 13, 2013 2:34 pm 
User avatar
もう帰らない
Member
[*]
[*]
[*]
[*]
I've never taken a college programming course, but I've not heard good things about them. From the sound of it, you learn... about what I already know about C++, which is just the very basics, and you get no practice with large programs, only small demo programs (which also means you get no practice reading ugly code that you don't understand). Correct me if I'm misinformed. In any case, relying on this to learn a programming language would be a mistake. What's most important is not knowing a programming language very well, but being good at learning new languages quickly and using them immediately (it would be very inefficient to spend weeks learning a new language before using it on an upcoming project).

I think an important experience for those who are starting to learn programming is to make small changes to existing large programs (that are free software, since otherwise you don't have access to the source code). As you get better, you can make your changes bigger and bigger until you are a good programmer.

_________________
https://onpon4.github.io
 
Top
Offline 
 
 
 [us]
 Post subject: Re: Fangaming FAQ
PostPosted: Tue Aug 13, 2013 5:17 pm 
User avatar
C# Programmer
Member
[*]
[*]
[*]
[*]
I understand what you're saying Black Squirrel and Onpon. I'm going to college to be a computer engineer. I would be going for computer science but as you said Onpon, it looks like they are only teaching basics for programming. CE at the places I'm looking at seems to be closer to the hardware, math and physics heavy (which I like). From an engineer point of view, learning what CS offers would be easier than learning CE from a CS view. As Black Squirrel said, there's a lot more to programming than the languages you use.

_________________
MFGG TKO (scrapped) - Animations
Image
"It feels that time is better spent on original creations" - Konjak
Focus on the performance, the idea, not the technical bits or details - Milt Kahl
 
Top
Offline 
 
 
« Previous topic | Next topic »
Display posts from previous:  Sort by  
 [ 13 posts ]  Reply to topicPost new topic 


Who is online

Users browsing this topic: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group