What game system language to program for a beginner ?

Discussion in 'Game Development General Discussion' started by someguy1, Oct 4, 2016.

  1. someguy1

    someguy1 Site Supporter

    Joined:
    Dec 6, 2013
    Messages:
    201
    Likes Received:
    16
    I was wondering what game system to program on for to make applications or games that would have the greatest support being coded on a windows computer. What if for example you wanted to program older lets say Windows 3.0 era DOS games or even Atari ST/Amiga but yet have them ported to be able to run on not only the older devices,but on newer systems ? which programming languages for again a beginner that wants to keep things very simple and understandable with access to a reference book that explains what every word in code does once typed in ?
     
    Last edited: Oct 4, 2016
  2. fate6

    fate6 Haha, I killed a Pumpkin!

    Joined:
    May 15, 2013
    Messages:
    973
    Likes Received:
    351
    C is king for just about everything and has plenty of beginner books.
     
  3. rso

    rso Gone. See y'all elsewhere, maybe.

    Joined:
    Mar 26, 2010
    Messages:
    2,190
    Likes Received:
    447
    C combines the flexibility and power of assembly language with the user-friendliness of assembly language. o_O

    You can use it for Win3x/DOS games, no problem; not sure about the Amiga, but for the ST you might have to drop down to Assembly to get good performance. And that is inherently unportable, at least between architectures.
    As for reference books (not tutorials!), you can't do any better than the C language standard, ISO/IEC 9899. I recommend grabbing* the original '89 version since with platforms that old, you often don't get a compiler that supports the latest language features.

    * The final ISO documents cost money, but you can usually find prerelease ones that are free.
     
    Last edited: Oct 5, 2016
    LemonHaze likes this.
  4. sanni

    sanni Intrepid Member

    Joined:
    May 30, 2008
    Messages:
    653
    Likes Received:
    77
    As a beginner myself I can say that C is great, especially the gcc compiler.
    When I wrote a small program for the N64 some years ago and then ported it over to an Arduino Uno just by changing some of the function names my mind was blown.

    I feel something like this could be the perfect entry point


    Afterall the game programmers also started with
     
  5. xmog123x

    xmog123x Peppy Member

    Joined:
    May 7, 2010
    Messages:
    382
    Likes Received:
    14
    C is the best way to go, it's still used in the industry, so it's definitely worth your time to learn it.
     
  6. Sonny_Jim

    Sonny_Jim Enthusiastic Member

    Joined:
    Apr 29, 2012
    Messages:
    525
    Likes Received:
    31
    To be honest, if I were learning to code today I would start with python/SDL, make a few games on a modern OS, then switch to C/C++ for writing games on older hardware.

    Reason being, it can be a bit of an uphill struggle and getting the core programming experience on a modern platform makes it a whole lot easier.
     
    zzattack likes this.
  7. someguy1

    someguy1 Site Supporter

    Joined:
    Dec 6, 2013
    Messages:
    201
    Likes Received:
    16
    Excellent advice, any book recommendations?

    Heard that " Jumping into C++ By Alex Allain " was a high recommendation
    What about for others and Python/SDL?

    Found a vintage pdf for the Atari ST to make games on called "Stephen Hill STOS the Game Makers Manual" online for free. But of course comes the trouble of deciding if the coding language is relevant anymore and worthwhile to learn.
     
  8. xmog123x

    xmog123x Peppy Member

    Joined:
    May 7, 2010
    Messages:
    382
    Likes Received:
    14
    for Python, I would just recommend doing some tutorials online that guide you step by step. I've used codeacademy to learn python and must admit it does it's job.
     
  9. rso

    rso Gone. See y'all elsewhere, maybe.

    Joined:
    Mar 26, 2010
    Messages:
    2,190
    Likes Received:
    447
    I'd recommend not starting with C++ if you want your stuff to run on hardware that lacks the power required for all the "cushioning" C++ provides. Start with C, then once you are comfortable with that, switch to C++ (if you still want to, that is), so you can at least try to estimate the costs of each language feature.
     
  10. Ekenmeremoved

    Ekenmeremoved i2 = j2 = k2 = ijk = −1

    Joined:
    Nov 19, 2016
    Messages:
    7
    Likes Received:
    0
    I would not recommend starting with C. (I'm going thro. tho.).

    As a beginner programmer the very first thing to do is to learn to actually program, and for that I would say make your life easy and go with a scripting language and a very easy dev enviro. Godot or Unity or even babylon.js

    You can actually put together things from day 0, and in the meantime learn C# or Javascript or something similar.

    Explanation why:
    Although C is pretty much king, any modern language is so heavily influenced by C, that if you teach yourself javascript as I did, when I transitioned to C, an awful lot of C was already natural to me, loops, conditions, functions and the like. Best thing is javascript is extremely easy to develop for (three.js will load any asset you link to (in you browser), it doesn't matter its 3D or video or else).

    With javascript you can forget about restrictions, sizes, and everything else, you can make an awful lot of mistakes and you still get stuff running because any intel i3 is light years ahead of anything with a control pad. Again, you are teaching yourself how to program, not game development, that's another story.

    When you actually are confident in putting stuff together and having some king of feedback in what you build (pacman clones, pong clones, super mario clones, etc) with said modern, free, easy, documented game engine, by that time you will have figured out by yourself that the most important part of game developing is the actual, final game itself and not the programming part of it (which anyone but us geeks could give any less f's about it). At this point you can go learning some more serious programming languages like c#, c++, c, delve into 3D programming, 2D art creation, 3D modelling and texturing, game concept development and planning, sound, etc etc, or actually consider to give the old systems a go, since you will have some familiarity with C as you learned some C - based lang and parts of it can be done on C.

    don't be fooled, because developing for old hardware is, in comparison to any free actual game engine, like REALLY REALLY PRETTY FUCKING HARD. Just the setup to build the executables are a lot of knowledge, and that its just the easy part. Old hardware are so special that any system is a world on its own. For any serious approach, its mandatory at some point in the near future to learn the specific assembler of the machine if you want to have any decent amount fps on screen (even 2D platformers), to anything that you can put together in Unity running at 60 in a couple of hours. You almost certainly need to code all your game from scratch (zero!) down to the last detail, and understand a machine quirks (and its related specific language quirks) to such levels could easily take years, yes, years.

    With all that in mind, now it becomes evident why know how to develop in a modern game engine is such a valuable asset: Because you can actually make a prototype really really easy, really really fast, somewhat downgrade it to your target platform (monochrome sprites, 1 bit music, reduced polycounts, low res textures etc), and if you are still convinced at this point with the result, then finish all the major aspects of the game so you have a clear blueprint of what you are trying to accomplish. Now it's a matter of cross-compiling on PC as much as you can, then start to bugfixing, rewritting and optimizing on the actual platform (optimization its an infinite cycle).

    No one approach homebrew this way, because it's like creating the same game twice, and that's the reason 99% of the homebrew games begin developed today are abandoned, because everyone starts to iterate directly in the target platform, and you need to come up with all aspects of the game in a very obnoxious, restrictive, specific, and slow (every change needs a complete game rebuild) platform. A surefire way to abandon the project. Specially if you you never actually defined what you game is trying to accomplish. But in my eyes, a fast game concept and porting cycles on PC plus a slow bugfixing and optimization cycles on the platform is the fastest way to develop homebrew that ships.

    Thats my reasoning at least. That's the reality of it, and that's why there are a zillion homebrew game projects out there but just a handful made it as a final releases (even most of homebrew unity games got abandoned at some point of development, because as said, game development even with the easiest tool is a very difficult and burning-out process).

    Anyway best of lucks.

    pd. if you want the best portability between systems go for C no question, but don't hope it's a magic bullet for old system development. You will need to do the majority of everything all by yourself still.

    pd2. i will like to give you a couple of links on the subject, how it was like to program crash bandicoot for the psx1
    http://all-things-andy-gavin.com/2011/02/02/making-crash-bandicoot-part-1/

    and how it was to program R-Type for the ZX Spectrum
    http://bizzley.com/

    great reads
     
    Last edited: Nov 29, 2016
  11. rso

    rso Gone. See y'all elsewhere, maybe.

    Joined:
    Mar 26, 2010
    Messages:
    2,190
    Likes Received:
    447
    And that is exactly why I would not hire* anyone that started out with JS (or similar) as his first language, unless he eventually recognized the various shortcomings, abandoned it and programmed in something better for quite some time to rid himself of all the bad habits.

    * For serious systems programming, that is. If you're doing web dev/java/throwaway apps, whatever, everyone expects it to be a bit slow and/or a resource hog anyways. Not my field tho.
     
    mairsil likes this.
  12. jonwil

    jonwil Robust Member

    Joined:
    Dec 16, 2005
    Messages:
    256
    Likes Received:
    21
    If you just want to learn how to make games and have never programmed anything before, Scratch (created by the MIT Media Lab) is a good place to start. Its easy to pick things up but it still teaches important concepts for actual programming like loops, if statements, math,

    As for Python, I have seen (and messed with) enough Python code in my time to know that its NOT a particular good language for someone who has never written any code before to use to learn programming. JavaScript is also not a good language for beginners unless their end goal is to be really good at making over-bloated web pages. (the attitude of people like RSO who say "its ok if web pages with JavaScript are resource hogs because people dont care if a web page makes a Core i7 feel like a 486" is why so many web pages these days suck so much). C and C++ are great languages but not the best choice for someone who has never written any code before due to all the things that can confuse newbies.

    My vote for a good language for someone who has never written code before to start with would be C#. Why?
    1.Its free. Large chunks of the .NET runtime and compilers and things have been made open source by Microsoft and unlike Oracle with Java, Microsoft isn't suing people just for copying the .NET APIs. Plus you can get Visual Studio Community 2015 with all the things you need for C# development for free for personal use (the things you dont get in the community edition are not things someone new to programming are likely to care about or need).
    2.It has a massive runtime library and a huge amount of 3rd party libraries available. You can get libraries to do UI, internet communications, 3D graphics, audio, input and a lot more besides.
    3.Learning C# gives you a great start towards picking up C and C++ later on. (in that so many of the concepts and even syntax are similar between the 2)
    4.The runtime is available on quite a few platforms (the aforementioned open-sourcing of the .NET runtime helped with this but even before that there was Mono).
    5.With things like Unity (which uses C# underneath and also has a free-for-personal-use version) its even easier to get started making games.
    6.Its easy to mix native C++ and C# code in a single app (much easier than with something like Java) if you need/want to do that.
    7.There are a boat load of good books and tutorials out there for learning C# and provided the one you are using was written recently enough you dont have to worry whether it will apply to the version of C# you are using (in fact given how much Microsoft puts into backwards compatibility, pretty much any C# book or tutorial should still apply to the latest version)
    and 8.C# is very powerful and flexible if you want to get into more advanced stuff later on.
     
    zzattack likes this.
  13. rso

    rso Gone. See y'all elsewhere, maybe.

    Joined:
    Mar 26, 2010
    Messages:
    2,190
    Likes Received:
    447
    Hey there, I never said it was "OK". But fact is, the web is full of mostly shitty scripting these days, so that's what people have come to expect (as in "tolerate", not "want" - huge difference!).

    Btw, have we abandoned OP's Amiga/Atari endeavors? Getting Unity or even just a C# runtime on those would be... challenging. Python and JS you possibly might be able to transmogrify and compile down to native code into something that kinda, sorta, sloooowly works (but it won't be pretty, that's for sure).
     
    Last edited: Dec 4, 2016
  14. Ekenmeremoved

    Ekenmeremoved i2 = j2 = k2 = ijk = −1

    Joined:
    Nov 19, 2016
    Messages:
    7
    Likes Received:
    0
    Dude, who wants to compite to native from JS lol, just throw away JS once you "got this coding thing" and start over on something more useful like C or similar which was my point from the beginning :D .
     
  15. zzattack

    zzattack Spirited Member

    Joined:
    Nov 19, 2014
    Messages:
    161
    Likes Received:
    62
    The debate essentially boils down to whether you start with a high- or low-level language. Everyone will agree that the path from beginner to the level of being able to write complex software, i.e. games, for old architectures no less, is long and tedious. In order to stand on your own feet you will have to learn about many concepts, 'just' knowing C or Javascript is barely touching the surface.

    The value of knowing many specific programming languages isn't high in itself. What is much more valuable is having mastered the concepts upon which many languages are built. With good understanding of these concepts, learning an additional language is trivial. Very basic things include core language aspects such as variables, control loops, the object oriented paradigm and common design patterns. Whether you learn about these in Java, Python, C# or C++ is really up to personal preference. Or usually, teacher's preference.

    I think starting with a high-level language is the more fun choice. I won't say better or prefered, because people differ in how they want to learn. If you like to learn based on the results that you obtain, you can actually start visual studio, start a C# project, drag some controls on a form and show a calculated result based on some input fields with minimal code, or even understanding of the .NET framework. By disecting the different pieces that make it work, you gain understanding of the whole piece. Other people want to understand the small individual pieces and then tie them together to see the end result. Question remains, how deeply do you want to understand each individual piece? It's easier to tell when you've understood enough to continue if you start top-down. Someone else might argue your understanding will be more complete when starting bottom-up.

    After learning a language, you'll likely want to do stuff with it. To give a super simple example, suppose you want to show a simple application with a single button that changes color when you click it. Most books about C won't cover anything like this at all. That's because this isn't specific to a single language, but rather to the graphical windowing framework that you'll be using on wherever your code needs to run. You'll need to look into WinAPI or X11, or any other windowing framework that is suited for your needs. This is not a downside though! The things you learned about C apply to any platform for which a C compiler exists, whether it be a 8-bit microcontroller or a modern 64-bit intel octacore.
    If you realize that after spending many hours on learning a language, you really can't do anything useful with it yet, don't be discouraged. This is just another point where more real fun begins!

    Programming knows a very large number of aspects. I could write about that all day, but instead I rather just name the ones I feel are important or common. There's no need to master all of these, or even any of them. Basic understanding will get you a long way already. Concurrency, datastructures & algorithms, networking, compilers, operating systems, distributed computing, visualization, databases (UGH!!) are a few.

    If you're starting from zero and all you want to do is write a game for a legacy platform with minimal resources or documentation, then you've got a long road ahead. I estimate chances of abandoning the idea higher than successfully completing it. But if you're interested in learning everything that comes with the development of a game, and think it'd be nice to be able to do so for such a platform eventually, then think about building up these fundamental skills and revisit the idea in a few years time when you're there. If the interest is still there, you've got a good shot at it.

    TLDR: prefer bottom-up learning? Start with C, otherwise pick {C++, Java, C#, Python, ... }; After scratching surface learn about, data structures, algorithms, design principles, c) frameworks or architectures
     
  16. CRTGAMER

    CRTGAMER Robust Member

    Joined:
    Jul 19, 2010
    Messages:
    276
    Likes Received:
    16
    From your statement, appears you want to jump into game programming without any background on in depth programming. Perhaps for PC gaming try one of the Game Maker or KliknPlay utility programs? A stepping stone of rudimentary coding in the "If ", "For" and "Goto" to place gaming routines. Not really programming, but an easy way in to create your own custom game.
     
  17. Trenton_net

    Trenton_net AKA SUPERCOM32

    Joined:
    Apr 13, 2007
    Messages:
    2,378
    Likes Received:
    58
    I admit, I didn't read all of these posts, but why not learn programming the way most of us did? Just get yourself an Atari or any 'classic' computer and just start programming BASIC? Sure, the syntax might be a little old, but you'll still learn all the basic concepts about how "flow control" works and stuff. And if you feel programming is your thing, then you can just move on to another more modern language.

    Atari, Famicom, Spectrum, C64, PC, etc all support some kind of BASIC for learning. In fact many older/original games such as Ultima started using BASIC and were commercially available.
     
    rso likes this.
  18. Ekenmeremoved

    Ekenmeremoved i2 = j2 = k2 = ijk = −1

    Joined:
    Nov 19, 2016
    Messages:
    7
    Likes Received:
    0
    although the ZXspectrum was able to handle basic, the key part for me was the ability to mess with assembler quickly and the extensive documentation.
     
sonicdude10
Draft saved Draft deleted
Insert every image as a...
  1.  0%

Share This Page