Answers.Body: <p>There are commercial flavours of the BASIC language that specialise in creating games; I remember briefly playing with Blitz Basic many many years ago and found it easy to work with, but there are numerous competing products you might want to also consider.  Despite dramatically reducing the complexity of creating games, absolute beginners are still going to have to do a lot of coding before they get to the point where they can create more than ultra-trivial games.</p>
  
  <p>A non-commercial option would be to use Python and Pygame.  Python is a fairly modern and friendly language, often used in schools as a first language, and Pygame is a fairly popular (and therefore well supported/documented) extension.  Again, absolute novices will need to do a lot of work with Python before they reach the Pygame level.</p>
  
  <p>As a way of making the grunt work of learning to code more interesting/rewarding for novices, you might want to investigate games that feature editors for building new levels.  These editors often use scripting for game events (Lua I believe is a popular language in such cases), meaning novices can learn to code by augmenting an existing game rather than building their own game from scratch.  The issue here is that transitioning away from writing event scripts to writing full game code may be traumatic, particularly as it will almost certainly require learning a new language.</p>
  
  <p>Of course Scratch (and its various siblings/clones) offers a way of covering the theory behind coding in a rewarding and friendly way, without actually 'writing' any code.  Given its popularity, no doubt there are plenty of resources to help transition students from Scratch to 'real' languages such as Python.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-16T16:41:44.060Z
Answers.Text: Actually, we have already considered Lua and Phyton/Pygame. Probably Phyton is a bit more beneficial as a programming language as it has a greater community.
Answers.UserDisplayName: MTSan
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-16T15:59:49.113Z
Answers.LastActivityDate: 2017-06-16T15:59:49.113Z
Answers.UserDisplayName: Simon M
Answers.Body: <p>Python (probably Python 3) would be a great option. Python is a very user-friendly language, perfect for beginner programmers (it also enforces good practices like indentation, etc). That being said, Python has many fantastic tools for experienced programmers, and is a very flexible language. It also has the already mentioned Pygame extension. Python is also widely used outside of the classroom, meaning it might be more useful to have experience with it than, say, BASIC or Scratch or game-specific platforms. </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-17T15:19:08.267Z
Answers.LastActivityDate: 2017-06-17T15:19:08.267Z
Answers.UserDisplayName: auden
Answers.Body: <p>We used processing in our summer program. It's a 4 week full day Mon-Fri program for rising 9 - 12 graders with no experience.</p>
  
  <p>In that time frame, they're able to learn some good CS fundamentals and write a nice project and games are the most common projects.</p>
  
  <p>Processing isn't a game development platform per se so that is both an advantage (teaching core cs using essentially Java) and a disadvantage (no built in game support although Processing is made for graphical applications that are dynamic with respect to time).</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-16T17:55:14.843Z
Answers.LastActivityDate: 2017-06-16T17:55:14.843Z
Answers.UserDisplayName: Mike Zamansky
Answers.Body: <p>I would probably say Python or Ruby, being that they are fairly easy languages to read and learn for beginners while still being worth their salt for CS pros.</p>
  
  <p>Another suggestion if you prefer a graphics-oriented course is using Javascript in the Unity engine is the best way to go. There is a graphical element (creator's choice of 2D or 3D) to the course then for the architects/engineers while still implementing a very heavily used and recruited programming language at the student's discretion.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-29T02:34:22.903Z
Answers.LastActivityDate: 2017-06-29T02:34:22.903Z
Answers.UserDisplayName: cMcNerlin
Answers.Body: <p>For those interested in 3D (though, it can be used in 2D) game making with an engine, I would suggest teaching <a href="https://unity3d.com/" rel="noreferrer">Unity</a>. It's an engine and a platform for creating games. </p>
  
  <p>Unity can be used with C# and Javascript, which means that those who choose to use it will also have some experience with some very popular high-level programming languages. </p>
  
  <p>Additionally, Unity is, in part, a graphical engine. This means that the game is made in a graphical way, and the student can decide how much coding would be involved (Unity has an asset store, in which some scripts can be used. Some are free and others are not). This allows students to be comfortable with the game they are making, and they decide how much programming they do. This
   degree of freedom is often very beneficial for students.</p>
  
  <p>A portion of making a game in unity involves designing, and artistic work. This can be a very convenient environment for the students who are into interactive design. </p>
  
  <p>Overall, Unity fits the bill by being flexible and answering each students needs and areas of interests and expertise. So I think that it is a very good choice to start with. </p>
  
  <p>From my experience, it's quite enjoyable to make games with it just for the sake of playing around with the software. This isn't too relevant to the question, but students who enjoy working on projects are more likely to make great projects.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-08-27T07:20:27.667Z
Answers.Text: One reason I like Unity is because its everywhere. students love it when they can see what they build and quickly share it with their friends. Unity should be the go to option for anything to do with game teaching.
Answers.UserDisplayName: Jay
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-16T18:13:06.330Z
Answers.LastActivityDate: 2017-06-16T18:13:06.330Z
Answers.UserDisplayName: ItamarG3
Body: <p>In my institution we are close to starting a new graduate level program for game development. However, this program will accept non-digital game designers or other non-experts (real architects who are into interactive design), too. Therefore, the programming course must cover inexperienced programmers (an introductory course for adults who have bachelor's). At the same time, it is preferable if it also includes tools for expert programmers who may also have bachelor's in computer science (this part is optional).</p>
  
  <p>The program is designed to be generic. So, some people may prefer to come up with 3D games using an engine, while others prefer to instantiate board games for children. As you may see, programming is not the aim as in CS courses, but just another tool, here.</p>
  
  <p>What language might be a good choice to teach inexperienced programming in the game domain?</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-16T15:26:20.147Z
Comments.Text: This question is probably a little too broad at the minute—are there any more *specific* constraints that you have to narrow down the answer set? At the minute, there are many languages that *might* help, but it'd be helpful to describe exactly what the "tools for expert programmers" are. Also, 2D games or 3D (or both)? Do you want a general purpose language, or would a game-specific language/framework be useful?
Comments.UserDisplayName: Aurora0001
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-16T15:58:40.760Z
Comments.Text: I have some potential answers for this, but it depends on age and where you want your advanced students to go. A little more information re: background, language, and objectives for how advanced you want the developers to be would help.
Comments.UserDisplayName: Peter
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-16T16:04:39.100Z
Comments.Text: Agree that it's pretty broad. Game programming could cover a ton of ground. And a beginner could be a 5 year old in kindergarten or a 35 year old career changer. There's a good discussion in here somewhere, but I think it needs to be a little more focused.
Comments.UserDisplayName: Ryan Nutt
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-16T17:06:25.820Z
Comments.Text: Solid revision - makes this a much more answerable question now.
Comments.UserDisplayName: Peter
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2018-01-22T23:33:02.257Z
Comments.Text: This Coursera course from Rice University uses building games to teach programming in Python: https://www.coursera.org/learn/interactive-python-1. The course covers some fundamentals of game programming along the way.
Comments.UserDisplayName: diaa
Tags: <language-choice><game-design>
Title: What would be a good first choice to teach game programming to beginners?
ThreadText: # What would be a good first choice to teach game programming to beginners?
  
  (Asked by: username_0 on 2017-06-16)
  
  In my institution we are close to starting a new graduate level program for game development. However, this program will accept non-digital game designers or other non-experts (real architects who are into interactive design), too. Therefore, the programming course must cover inexperienced programmers (an introductory course for adults who have bachelor's). At the same time, it is preferable if it also includes tools for expert programmers who may also have bachelor's in computer science (this part is optional).
  
  The program is designed to be generic. So, some people may prefer to come up with 3D games using an engine, while others prefer to instantiate board games for children. As you may see, programming is not the aim as in CS courses, but just another tool, here.
  
  What language might be a good choice to teach inexperienced programming in the game domain?
  
  **Tags:** language-choice, game-design
  
  > **Comments:**
  > **username_1**: This question is probably a little too broad at the minute—are there any more *specific* constraints that you have to narrow down the answer set? At the minute, there are many languages that *might* help, but it'd be helpful to describe exactly what the "tools for expert programmers" are. Also, 2D games or 3D (or both)? Do you want a general purpose language, or would a game-specific language/framework be useful?  
  > **username_2**: I have some potential answers for this, but it depends on age and where you want your advanced students to go. A little more information re: background, language, and objectives for how advanced you want the developers to be would help.  
  > **username_3**: Agree that it's pretty broad. Game programming could cover a ton of ground. And a beginner could be a 5 year old in kindergarten or a 35 year old career changer. There's a good discussion in here somewhere, but I think it needs to be a little more focused.  
  > **username_2**: Solid revision - makes this a much more answerable question now.  
  > **username_4**: This Coursera course from Rice University uses building games to teach programming in Python: https://www.coursera.org/learn/interactive-python-1. The course covers some fundamentals of game programming along the way.  
  
  ---
  
  ## 5 answers
  
  ### Answer by username_9 on 2017-06-16. Score: 14
  
  For those interested in 3D (though, it can be used in 2D) game making with an engine, I would suggest teaching [Unity](https://unity3d.com/). It's an engine and a platform for creating games.
  
  Unity can be used with C# and Javascript, which means that those who choose to use it will also have some experience with some very popular high-level programming languages.
  
  Additionally, Unity is, in part, a graphical engine. This means that the game is made in a graphical way, and the student can decide how much coding would be involved (Unity has an asset store, in which some scripts can be used. Some are free and others are not). This allows students to be comfortable with the game they are making, and they decide how much programming they do. This
  degree of freedom is often very beneficial for students.
  
  A portion of making a game in unity involves designing, and artistic work. This can be a very convenient environment for the students who are into interactive design.
  
  Overall, Unity fits the bill by being flexible and answering each students needs and areas of interests and expertise. So I think that it is a very good choice to start with.
  
  From my experience, it's quite enjoyable to make games with it just for the sake of playing around with the software. This isn't too relevant to the question, but students who enjoy working on projects are more likely to make great projects.
  
  > **Comments:**
  > **username_10**: One reason I like Unity is because its everywhere. students love it when they can see what they build and quickly share it with their friends. Unity should be the go to option for anything to do with game teaching.  
  
  ---
  
  ### Answer by username_5 on 2017-06-16. Score: 5
  
  There are commercial flavours of the BASIC language that specialise in creating games; I remember briefly playing with Blitz Basic many many years ago and found it easy to work with, but there are numerous competing products you might want to also consider. Despite dramatically reducing the complexity of creating games, absolute beginners are still going to have to do a lot of coding before they get to the point where they can create more than ultra-trivial games.
  
  A non-commercial option would be to use Python and Pygame. Python is a fairly modern and friendly language, often used in schools as a first language, and Pygame is a fairly popular (and therefore well supported/documented) extension. Again, absolute novices will need to do a lot of work with Python before they reach the Pygame level.
  
  As a way of making the grunt work of learning to code more interesting/rewarding for novices, you might want to investigate games that feature editors for building new levels. These editors often use scripting for game events (Lua I believe is a popular language in such cases), meaning novices can learn to code by augmenting an existing game rather than building their own game from scratch. The issue here is that transitioning away from writing event scripts to writing full game code may be traumatic, particularly as it will almost certainly require learning a new language.
  
  Of course Scratch (and its various siblings/clones) offers a way of covering the theory behind coding in a rewarding and friendly way, without actually 'writing' any code. Given its popularity, no doubt there are plenty of resources to help transition students from Scratch to 'real' languages such as Python.
  
  > **Comments:**
  > **username_0**: Actually, we have already considered Lua and Phyton/Pygame. Probably Phyton is a bit more beneficial as a programming language as it has a greater community.  
  
  ---
  
  ### Answer by username_6 on 2017-06-17. Score: 4
  
  Python (probably Python 3) would be a great option. Python is a very user-friendly language, perfect for beginner programmers (it also enforces good practices like indentation, etc). That being said, Python has many fantastic tools for experienced programmers, and is a very flexible language. It also has the already mentioned Pygame extension. Python is also widely used outside of the classroom, meaning it might be more useful to have experience with it than, say, BASIC or Scratch or game-specific platforms.
  
  
  ---
  
  ### Answer by username_7 on 2017-06-16. Score: 2
  
  We used processing in our summer program. It's a 4 week full day Mon-Fri program for rising 9 - 12 graders with no experience.
  
  In that time frame, they're able to learn some good CS fundamentals and write a nice project and games are the most common projects.
  
  Processing isn't a game development platform per se so that is both an advantage (teaching core cs using essentially Java) and a disadvantage (no built in game support although Processing is made for graphical applications that are dynamic with respect to time).
  
  
  ---
  
  ### Answer by username_8 on 2017-06-29. Score: 1
  
  I would probably say Python or Ruby, being that they are fairly easy languages to read and learn for beginners while still being worth their salt for CS pros.
  
  Another suggestion if you prefer a graphics-oriented course is using Javascript in the Unity engine is the best way to go. There is a graphical element (creator's choice of 2D or 3D) to the course then for the architects/engineers while still implementing a very heavily used and recruited programming language at the student's discretion.
  
  
  ---
  
  