Bay 12 Games Forum

Finally... => Life Advice => Topic started by: delphonso on January 09, 2019, 09:46:56 am

Title: I wanna make a game
Post by: delphonso on January 09, 2019, 09:46:56 am
I - like probably all of us - have had a million and one ideas for games that I'd like to play.

Now, I'm in a generally stable position, with adequate free time. I want to put this time to good use and learn to make some games from scratch. I've had the slightest of brushes with programming languages and am fond of the C family.

So, where do I start - really?
Title: Re: I wanna make a game
Post by: Parsely on January 09, 2019, 10:23:03 am
1. outline game idea
2. research
3. implement
4. test: it's bugged so return to 2, else continue
5. you made a game, celebrate!
6. post-completion: final release and/or patching, or abandonment

Detailed:
Google tutorials for the most basic game you could make (tetris, a shmup, pac man, pong, etc.) in your language of choice and follow along! This will help give you the confidence that you can construct a simple game and these fundamentals will make you just good enough to try implementing your own game, and only implementing will let you understand how tough your idea is to realize.

Then you should start organizing your ideas and try to think of an easy idea you'd like to implement, this is really important because most game ideas people have are very complex for a single person to implement. Once you have it in plain english write some relevant pseudocode, this is where you'll realize how much stuff you don't know (like how to make a tilemap) and you can start googling topics to research and putting those in your notes.

If you've never made a game before I say for now don't worry about all the complicated stuff like release, marketing, financing, patching, or support. Just focus on being creative and having fun!

You could even make a thread in creative projects and blog about it and just throw every small question you have at the wall, could be fun!
Title: Re: I wanna make a game
Post by: nenjin on January 09, 2019, 12:24:46 pm
There are many moving parts to any game.

And new game creators often want to do too much with too small of a skill set.

Start small, and start with your programming, because you don't have a game without that and it's objectively the hardest part to work through.

I'd start with Python and try writing a text adventure game with some actual game logic, like Hit Points and attack rolls. If you can pull that off, you can graduate to something more elaborate. There are many tutorials online with good templates you can implement, understand, modify and then fill in the blanks.

We've got a few budding game developers around here too. Like the dude who is making the Innkeeper game in Other Games, he's built that project from scratch over the last couple years. Maybe ask them where they started and what they started with.
Title: Re: I wanna make a game
Post by: delphonso on January 09, 2019, 11:43:39 pm
Thanks, you two. To give some additional information and background - I took a crack at this before (ignoring the many times I've fooled around with game making resources like RPG maker) trying to go down the Python route. I learned an adequate amount of Python skills and put together a simple text adventure. I then opened PyGame, for which I could only find tutorials of previous versions of Python, meaning the syntax and examples weren't able to be used. I lost motivation and bailed.

I learned some C++, which I liked, and then some C# out of curiousity. Life got a bit hectic and I've been out of it for a while. I think this is actually a good spot to be in since I - reasonably could start working with any of those three languages and head down a path.

Roguelikes are up my alley - both for their simple visuals, and because of my experience with tabletop gaming. I've designed game systems in my freetime that use percentile dice or multiple d6's and - I think - I have a decent grasp of balance.

The problem I'm running into is the gap. Printing text, handling booleans, arithmatic are things I can grasp and implement in clumsy programs. But things - like you mentioned - like tilemaps seem far beyond me. Googling wasn't successful with Python on this, but maybe the C family would be easier. I'm not sure.
Title: Re: I wanna make a game
Post by: nenjin on January 10, 2019, 10:59:03 am
Yeah, graphics are one of the big hurdles to overcome.

If you don't know how, your only option is to research, practice and prototype. I wouldn't even try to think of it as a game right now, think of it as "I need to print stuff to the screen, even if it's just the @ symbol."

But I'd be surprised if there aren't C# tutorials online that are geared towards displaying graphics for games. But this is why I suggest maybe starting in a lower level language than C. You may find more resources directly related to what you're trying to do.
Title: Re: I wanna make a game
Post by: Parsely on January 11, 2019, 11:25:24 am
Thanks, you two.

I learned some C++, which I liked, and then some C# out of curiousity. Life got a bit hectic and I've been out of it for a while. I think this is actually a good spot to be in since I - reasonably could start working with any of those three languages and head down a path.

Roguelikes are up my alley - both for their simple visuals, and because of my experience with tabletop gaming. I've designed game systems in my freetime that use percentile dice or multiple d6's and - I think - I have a decent grasp of balance.
No problem!

Don't get too hung up on language, people have made games in any language you can think of. All the popular languages will have loads of tutorials if you know what terms to search (that's the hard part). Pick something and go for it!

Balance can only be achieved through testing.

The problem I'm running into is the gap. Printing text, handling booleans, arithmatic are things I can grasp and implement in clumsy programs. But things - like you mentioned - like tilemaps seem far beyond me. Googling wasn't successful with Python on this, but maybe the C family would be easier. I'm not sure.
Just gotta google them and take it all one step at a time. Don't be afraid to ask for help!

Explaining tilemaps sounded fun so I decided to give it a shot. Tilemaps are fairly easy but I needed to be walked through the idea the first time. There are loads of tutorials about these online, if you're looking for one in a specific language I can help you find one.

My brief explanation of tilemaps
What's a tile? Video game graphics jargon. It's a square or rectangular image, usually a part of the background, in a video game.

What's a tilemap? A tilemap is some data structure (like an array) that stores data that represents tile positions and types. This is useful for building maps in tile-based games. Like all problems in programming, there are zillions of ways to implement a solution.

Important about drawing to the screen: We have a screen whose origin is (0,0), where (0,0) is the top left corner of the screen. Any images we draw are also drawn from the origin, so whatever point you choose to draw an image from, that's where the top left corner of your image will be. This is important because if an image isn't part of the background it probably uses transparency and then it's not always obvious where the center of the image (important for objects like projectiles, enemies, the player) is going to end up.

Code: (pseudocode for a basic tilemap) [Select]
// integer coordinates where an image will be drawn at
coordinateX = 0
coordinateY = 0

// integer dimensions of our tiles
tileX = 10
tileY = 10

// objects to hold reference to tile image files
wall = wall.png
dirt = dirt.png

// we store tile objects so we can reference them easily with integers later
// note: images[0] = dirt, images[1] = wall
images = {dirt, wall}

// tilemap array, the integers represent the tiles that will make up the map being drawn on the screen
// expected: 0 = dirt, 1 = wall
tilemap = {
  {1,0,1}.
  {1,0,1},
  {1,0,1}
}

// use the tilemap data to draw the map to the screen
for each row in tilemap {  // index variable is i
  for each col in row {    // index variable is j
    draw(images[tilemap[i,j]], coordinateX, coordinateY)  // draw() draws an image to the screen; it has 3 arguments: a reference to the image, and the x and y coordinate where the image will be drawn
    coordinateX = coordinateX + tileX          // we're going left to right by adding the width of a tile to the x coordinate so we can move to the right and print the next image in the row so it's exactly flush with the previous one
  }
  coordinateY = coordinateY + tileY      // we're done with that row, so we add the height of a tile to the y coordinate so the next row of tiles is exactly flush with the row above it
}

Other issues you might have to solve now that your basic tilemap is working:
- I have more than one map, I need to store all these tilemaps so I can reference them as the game progresses
- I have this huge cool map but I only want to draw part of it to the screen
- I want the screen to scroll as the player moves, I need to update the map in real time somehow
- I need to draw multiple layers of tilemaps to the screen
- I want the map to change and react to the player's actions and vice versa
Title: Re: I wanna make a game
Post by: delphonso on January 12, 2019, 08:22:02 am
So, after chatting with a friend, I'm leaning back on C++.
One - because my buddy is also trying to learn it, and we can bounce code back and forth.
And two - roguebasin has a libtcod roguelike tutorial that I've heard good things about, and might be something I'd like to try later on.

Before all that, I'm going to spend a few weeks brushing up on C++ and then put together a text-adventure, as you recommended. I might even put together a thread to ask questions and to post on my progress as I try to improve on things.

I'll plan out what I want that text adventure to entail - specifically things that will be useful for a larger game (inventories, health points, etc.)
And I'll get to work.
Title: Re: I wanna make a game
Post by: Parsely on January 12, 2019, 12:27:08 pm
Absolutely sick nasty

Make sure you let us know if you're gonna blog it up
Title: Re: I wanna make a game
Post by: Trekkin on January 13, 2019, 02:22:52 am
So, after chatting with a friend, I'm leaning back on C++.
One - because my buddy is also trying to learn it, and we can bounce code back and forth.
And two - roguebasin has a libtcod roguelike tutorial that I've heard good things about, and might be something I'd like to try later on.

Before all that, I'm going to spend a few weeks brushing up on C++ and then put together a text-adventure, as you recommended. I might even put together a thread to ask questions and to post on my progress as I try to improve on things.

I'll plan out what I want that text adventure to entail - specifically things that will be useful for a larger game (inventories, health points, etc.)
And I'll get to work.

It'd be worth your time to learn about best practices in software development more generally, too; there's a layer of skills between the code and the concept that runs from encapsulation to testing to version control to a whole panoply of engineering esoterica designed to keep you from doing things that only look foolish in hindsight. It's boring as all get out, but it's also how you avoid coding yourself into a corner or piling kluges on top of each other until the project grinds to a halt under the increasing weight of its own debugging load and you're left with an unrecoverable pile of spaghetti, that being the usual fate of amateur coding projects above a certain size.
Title: Re: I wanna make a game
Post by: delphonso on January 14, 2019, 11:55:18 pm
Things are going to slow for sure, as the fan on my laptop has given up the ghost, and I'm likely not finding a replacement until the end of February.

In the meantime, I can do plenty of reading and light work (interrupted by overheating) in coding.

Trekkin, do you have any resources on that? I think I've got a generally good mind for this stuff, but I know it'll be a lot of trial and error on huge, dumb mistakes.
Title: Re: I wanna make a game
Post by: Trekkin on January 15, 2019, 12:22:05 am
Trekkin, do you have any resources on that? I think I've got a generally good mind for this stuff, but I know it'll be a lot of trial and error on huge, dumb mistakes.

Not to be even more of an ass, but everyone thinks that when they start out. I certainly did. It's kind of why these mistakes are so common. And yes, I do have a set of resources I use for this, but they're full of code I can't legally show to you so they're of no help here and they're overkill for a game.

Unless you want to actually get a degree in software engineering you'd probably be best served just Googling everything I mentioned; there are plenty of explainers out there for this, but you're the only one who knows which one will make sense to you. There's a lot of routes down this particular rabbit hole and they meet up at the bottom, so don't worry too much about finding everything. If you want relatively modular things to start with, search "how do write unit tests", "why do we encapsulate things" and "how to version control" and then look up everything that doesn't make sense to you about what you find.
Title: Re: I wanna make a game
Post by: Starver on January 15, 2019, 01:28:29 am
Because I'm not currently in the middle of any coding project other than my own things, I can perhaps more freely wander through this territory without having to self-censor for privileged information. Although it also means I'm low on example materials (through sparcity, rather than confidentiality). So if you can handle some rather generalised and imperfect advice, I'm giving it.  And every new coordinated project I'm attached to always seems to have a different ideology behind it (written or unwritten) so that I'm not tied to a particular fetish or paradigm-of-the-month. There's all kinds of things to look out for. Some of which may be useful to you (OP), some of which may be effectively snakeoil as far as what you really need.

A good start (before even looking at collaboration) might be understanding the Waterfall Model (https://en.wikipedia.org/wiki/Waterfall_model) of project development, but in my experience it'll usually end up with eddies sending you back up a level or three when you discover you were hasty/shoddy over a phase. With the most structured ways of dealing with this maybe being the V (https://en.wikipedia.org/wiki/V-Model_(software_development)) or Spiral (https://en.m.wikipedia.org/wiki/Spiral_model) models, but they can easily be (mis-)applied to projects with no end specified (intentionally or not), so beware.


And keep a look out (sometimes in the manner that you need to look out for 18-wheelers with dodgy brakes!) for "Agile", "Rapid" and/or "Extreme" methodologies in group working, in amongst the rest of them. Links to these (probably) exist somewhere in the above pages, and I imagine you probably won't get beyond what passes for their summaries, at least on first reading. But they work for some, and/or some of the time, when it counts.

But, naturally, if you're teaming up with a buddy in a mutual development (and can get some physical or telephonic shared time to see the same thong at the same time) it would be remiss of me not to mention Pair Programming (https://en.m.wikipedia.org/wiki/Pair_programming). Maybe you'd rather make it more like Postal Chess, though. (And make sure you comment the code thoroughly?)


Some of these things mentioned are how to plan things, some of them are how to do the things you may or may not have planned, some of them handle both. There's also bits in some of them that try to get you (at the coding-coalface) properly reporting up to the Manager for the project (internally or externally supervisory) and obviously that would be reduced to just common contentedness with how your collaboration is going, rather than a time-sensitive deliverable to a finely defined and legally-binding delivery spec. But do think about at least aspirational waypoints, at one or two steps towards the vague "learn something" end-goal.


How you stand by these methods and practices is another matter. When you're working to deadlines and budhets and have to fill in timesheets, there's often also plenty of auxiliary (not directly productive) paperwork, or e-paperwork, needing your signature, or e-signature, and it sounds like Trekkin knows all about that. I'm not sure I would recommend you go that far and be your own slave-driving 'bosses', at this stage. But think about some of the written(/typed) planning.

What's the current aim and how will you know you've achieved it, for example?
Title: Re: I wanna make a game
Post by: Trekkin on January 15, 2019, 02:29:01 am
I'd thought about mentioning the models, but in my experience, self-directed newbies starting from whole cloth instinctively gravitate toward a version of spiral anyway just by dint of not having the confidence to plan in large steps -- and telling them about process models generally leads to a lot of abstract yak shaving. When someone doesn't know what they're doing, planning is a lot more appealing than implementation, and they can end up writing elaborate, highly detailed, and entirely useless specifications for software that they don't know how to write and that often cannot exist. You can even watch how they shift the bits they don't understand away from whatever they're currently pseudocoding.

Probably the most useful benefit of best practices for the autodidact programmer is salvageability. A project that dies from lack of relevant planning (which is almost inevitable while learning) can be raided for usable parts for the next iteration; buggy spaghetti cannot.
Title: Re: I wanna make a game
Post by: nenjin on January 15, 2019, 11:01:15 am
TLDR: Rather than "making a game", focus on "learning to program" first.
Title: Re: I wanna make a game
Post by: Trekkin on January 15, 2019, 02:55:15 pm
TLDR: Rather than "making a game", focus on "learning to program" first.

Sure, but absent any idea of how to learn to program, telling someone to go do it is useless.
Title: Re: I wanna make a game
Post by: nenjin on January 15, 2019, 08:29:53 pm
That wasn't specifically directed at you, btw.

FWIW I did my C++ reading along with a hefty dose of UML Design philosophy. I never ended up coding anything meaningful.
Title: Re: I wanna make a game
Post by: Parsely on January 16, 2019, 02:22:53 pm
My philosophy in coding, drawing, and recently skating is just keep doing it and looking for the fun and you will progress. If you overload yourself with prerequisites and expectations you might become so intimidated or bored that you'll never do anything. I say just go in with what knowledge you have now and write some bad code and learn naturally, by making mistakes, instead of trying to prepare for everything first. Making a game sounds way more fun than studying design paradigms, and for your first game it's OK to skip the boring, important stuff in order to give yourself the confidence to try a harder project.
Title: Re: I wanna make a game
Post by: eerr on January 19, 2019, 04:24:00 am
It might not seem like something interesting, but:

You should fuss around with making something in Gamemaker.

Not necessarily a long term thing, but to establish a benchmark.

AKA you will figure out if basic programming and drawing is your style.
and if you want to do more, that should thusly be obvious.

I'm not satisfied with game maker but it can make some decent games.

Game maker should have just enough to wet your whistle, or be something you want to stick with.

Title: Re: I wanna make a game
Post by: Trekkin on January 19, 2019, 04:52:59 am
Game maker should have just enough to wet your whistle, or be something you want to stick with.

If by "wet your whistle" you mean it will literally drive him to drink, I'd agree, but at least you didn't plug RPG Maker.

As a general rule, if software is marketed as letting you do something "without coding", kill it with fire. At best, you'll immediately run afoul of the software's inherent restrictions and want to learn how to do something real. At worst, you'll never realize what it doesn't let you do.
Title: Re: I wanna make a game
Post by: delphonso on January 19, 2019, 05:48:09 am
Game maker should have just enough to wet your whistle, or be something you want to stick with.
At best, you'll immediately run afoul of the software's inherent restrictions and want to learn how to do something real.

And thus, this thread.
I have cracked open both Unity and Gamemaker. Gamemaker was rewarding as I made a short 'game' that went through a few levels. Then I hit two problems: pathing required using Game Maker's proprietory language, and the free version was limited to about 4 'maps'.
I got more use out of Unity, which currently runs with C#. I think it will likely be a place I go in the future. But I'd rather make something from scratch first for the experience of it.

As far as design strategies, I'm more willing to make a massive mistake and learn from it rather than following the schemes and advice of other. I've never been good at following directions without deeply understanding /why/. This is also the wall I ran into early on when doing tutorials and searching for answers - hardly ever a why, just how to do it.
Title: Re: I wanna make a game
Post by: Trekkin on January 19, 2019, 06:53:39 pm
As far as design strategies, I'm more willing to make a massive mistake and learn from it rather than following the schemes and advice of other. I've never been good at following directions without deeply understanding /why/. This is also the wall I ran into early on when doing tutorials and searching for answers - hardly ever a why, just how to do it.

You should probably go make massive mistakes instead of asking us for advice then, no?
Title: Re: I wanna make a game
Post by: delphonso on January 19, 2019, 09:44:21 pm
That's probably good advice.
Title: Re: I wanna make a game
Post by: askovdk on January 28, 2019, 07:05:32 am
When Media Molecule 'Dreams' comes out on PS4, then it looks like it will be a wonderful sandbox to prototype simple game ideas in.
(And yes, I finally dare to say 'when' and not 'if', as it's on closed beta now  :) )

The latest video uploads from them shows creations made by the beta players, and it's nice to see how different the creations are. (But centered around '3D world action adventure').
https://www.youtube.com/watch?v=dFFgBaWTTwo (https://www.youtube.com/watch?v=dFFgBaWTTwo)


Title: Re: I wanna make a game
Post by: Urist McScoopbeard on January 28, 2019, 11:48:58 am
Y'know listen, I am not an expert, definitely not a great programmer, and probably rough around all my edges, but I've wanted to make games for ever and I have gotten some insight over the years while I decide whether or not I should go full ham on the urge.

I think there's a big distinction between making games and designing them. If you want to design games, honestly don't even waste your time with any of the available game creation kits--to echo what others have said: they're really frustrating and not all that flexible. If you really want to design games, just make physical prototypes and digital mockups for what the actual video game might look like and describe the rules/gameplay.

If you want to make that game, you really do have to learn how to program, and over time I really have been disabused of any notion that using a pre-existing game engine will help you do that. Go learn Python, Java, or C++ and get the easiest, simplest game library you can find and just start with the basics.
Title: Re: I wanna make a game
Post by: thompson on February 22, 2019, 11:29:00 pm
Game maker should have just enough to wet your whistle, or be something you want to stick with.

If by "wet your whistle" you mean it will literally drive him to drink, I'd agree, but at least you didn't plug RPG Maker.

As a general rule, if software is marketed as letting you do something "without coding", kill it with fire. At best, you'll immediately run afoul of the software's inherent restrictions and want to learn how to do something real. At worst, you'll never realize what it doesn't let you do.

For anyone who finds this thread looking for some general guidance on game development, I'd just like to add a little nuance to the comment above. Using pre-packaged game making software (or mod making software for Syrim, etc) WILL significantly limit what you can do, and are therefore not appropriate if you actually want to learn programming, how to make a game, or to make a game good enough to actually sell. However, it's important to remember that the community to hobby game makers who cannot program is considerably larger than those who can. So, if you intend to make a larger more complex game and need help with graphics design you could develop a prototype game using one of these widely used tools and use that as a proof-of-concept to illustrate your game idea, the setting, basic mechanics, and how it all fits together. You'll have a much easier time recruiting artists into your projects if you actually have something to show them that they can work with. You'll also have a better idea of the game components you'll need down the track as well.

It may also be a good idea to join a more experienced game developer's team and learn from them rather than start out doing your own thing.

Spoiler (click to show/hide)
Title: Re: I wanna make a game
Post by: Doomblade187 on February 24, 2019, 03:53:46 am
Per the Gamemaker thing, a quick thought: Undertale is a Gamemaker game. And gamemaker also does support coding, too. :)

Just remember: make the game the way you want, that works for you.
Title: Re: I wanna make a game
Post by: Parsely on February 24, 2019, 10:43:40 pm
I get what people are saying, for beginner programmers Gamemaker and similar packages are not ideal if you want to learn programming in a way that will make those programming skills as broadly applicable as possible, but I would go so far as to say that most gaming projects don't require a brand new engine or dev tools that are much more powerful than what these packages can offer, and I'd point out that this thread is called "I wanna make a game" and this stuff will definitely get you to that goal.

Gamemaker is restrictive but if you're rolling your own engine and/or dev tools I'm sure you'll run into the same problems as you will inevitably build restrictions into your own tools, surely it's not that different from being a scripter on a large game project with it's own API (i.e. you use the tools you're given or build your own ON TOP of what exists you don't get to drill down and go under the hood). Some people are okay with these restrictions though because in return they get to very quickly prototype projects and this means making a game gets fun WAY more quickly

Like Doomblade said, choose the tools that suit you, go have fun making stuff. You WILL get good at it

Spoiler (click to show/hide)
Is it paid work? If so PM me, if it's not work I can do I can try and recommend you to someone who can do it.
Title: Re: I wanna make a game
Post by: Sebastian2203 on March 01, 2019, 10:00:32 am
Tynan Sylvester (the creator of Rimworld) has a good book about designing games.
Itīs called Designing Games 32

It is not intended for the absolute beginner, it is assumed you are already capable of creating something, the book just explains the various problems, nuances, psychology of game making.

(I would link it but I am on mobile internet so you will have to google it yourself to find it.)
Title: Re: I wanna make a game
Post by: Parsely on March 01, 2019, 11:21:26 am
https://the-eye.eu/public/Books/IT%20Various/designing_games.pdf

Hilariously, on page 47 it says: "Game design cannot be learned from a book. It requires experience."
Title: Re: I wanna make a game
Post by: Starver on March 01, 2019, 12:11:52 pm
Hilariously, on page 47 it says: "Game design cannot be learned from a book. It requires experience. be learnt from a .PDF"

Fixed! ;)
Title: Re: I wanna make a game
Post by: eerr on March 03, 2019, 10:44:08 pm
What I was thinking:
Test the water with Game Maker. Figure out if you want to step it up a notch.
If that doesn't satisfy you, find something with more power, like Unity.

I'm making something myself
I slowly work on a discord bot. I use this discord bot to play mastermind through discord.
Right now my work is stalled because I'm not sure where I want to go with it.
My stuff (http://www.bay12forums.com/smf/index.php?topic=172934.0)

Also, the easiest type of game to make is a 2d shoot'em up game.

It's just collisions and enemies that fly in one direction. AKA Game Maker or Unity can get you there.
Undertale, though well recieved, was Toby Fox's big "proof of concept".
It's basic concept, dodge and deliver narrative, is simple enough.
If he can do it, so can you.
Title: Re: I wanna make a game
Post by: Jimmy on March 10, 2019, 07:50:13 am
Alternatively, just use the tried-and-true method of making games!

Step 1: Start with a large fortune
Step 2: Hire people to make the game for you
Step 3: Sell game to public
Step 4: Watch your large fortune turn into a small fortune!

In all seriousness though, perhaps teaming up with an existing group of like-minded individuals to gain experience will assist you in reaching your goals. Especially if your group has a good team leader that can allocate the workload out to the best people for the job.
Title: Re: I wanna make a game
Post by: Sanctume on March 25, 2019, 04:43:48 pm
Geez, back in my days, there was Compute Gazette magazine that has printed code in basic. 

Simple What is your name? 
> Sanctume

:100
Hello Sanctume.  Would you like to play a game (Y/N)?
> Y

Pick a number between 1 - 6.
> 4

You lose.  My number is 5.

(go to 100) 

Simple as that.  It has programming concepts such as variables, input, random, and print.  There was no functions or procedures objects/class in BASIC, so it was spaghetti code. 

--
My first text game was based on those Choose Your Own Adventure book.  But it was too wordy and a lame book, so I substitute my own D&D flavored encounter, treasures, etc.  Soon enough, I understood outlining and pretty much the summary of my game. 

When I got into C, it was totally hard, because I was unfamiliar with the syntax.  However, the knowledge of programming concepts such as for loops, while loops, boolean logic, remain.  The new thing that threw me off were index of multi-dimention arrays, and memory pointer. 

--
I've gone back and forth in designing my games, to rather just find something and play now. 

I did try Unity engine, but I was just not up learning a new engine to draw for me.  Text based adventure is where I got comfortable, and did not care much how to make it into graphics. 

I even got into some AI DM kinda code, and some version of TRADE WAYS 2010.  Fun times, regardless of the final result.  I just learned that I enjoy coding as well as learning something along the way.
Title: Re: I wanna make a game
Post by: Starver on March 25, 2019, 05:56:47 pm
Simple as that.  It has programming concepts such as variables, input, random, and print.  There was no functions or procedures objects/class in BASIC, so it was spaghetti code.
Depends upon the BASIC. PROCs and FNs (value returning subs) existed in BBC BASIC and could do much to cut down on arbitrary spaghettification.

As did GOSUBs, which combined with the arbitrary-point-of-recall RETURN was arguably worse than the GOTO, with both their mutable destinations if you kept line numbers relevant letting you enter and then leave code-segments in an almost untrackable mess. Compare QUADRAT on page 33 with TARTAN on page 35 in the classic manual (http://bbc.nvg.org/doc/BBCUserGuide-1.00.pdf).

I rewrote many a magazine/book programme listing into a micro, including a very complex adventure game where all the *spoiler* game info was stored in the DATA sections in encoded form, so that one could not learn the in-depth secrets of the game during its transferal. The debugging was a pain, due to both thebsheer quantity of the material and the obfuscated nature of it all to hide obvious typos. (While the one entered that was a simplified Eliza revealed all its secrets. It was still entertaining for a while, though it did take some of the marvel out of all other implementations - much better to watch others, e.g. on ElizaBots on IRC, back in the day, and unsuspecting users rused to arrive on their channels.)
Title: Re: I wanna make a game
Post by: Iduno on March 27, 2019, 07:56:14 am
The computer programmers I've known always said they started a new language by making a version of Scorched Earth. (https://en.wikipedia.org/wiki/Scorched_Earth_(video_game)) It's a simple enough game, but I guess it makes you use a lot of different programming techniques.
Title: Re: I wanna make a game
Post by: Jimmy on July 11, 2019, 04:49:10 pm
You can usually purchase prepaid visa cards that are used for gifts if you need something with a credit card number. Comes with the added bonus of never worrying about compound interest!
Title: post deleted
Post by: Dreadusa on February 11, 2020, 04:04:24 pm
post deleted
Title: Re: I wanna make a game
Post by: Reelya on June 10, 2020, 07:15:12 am
I'm wondering if anyone had any progress with their game-making? Should we have a game-making challenge thread?

Simple as that.  It has programming concepts such as variables, input, random, and print.  There was no functions or procedures objects/class in BASIC, so it was spaghetti code.
Depends upon the BASIC. PROCs and FNs (value returning subs) existed in BBC BASIC and could do much to cut down on arbitrary spaghettification.

As did GOSUBs, which combined with the arbitrary-point-of-recall RETURN was arguably worse than the GOTO, with both their mutable destinations if you kept line numbers relevant letting you enter and then leave code-segments in an almost untrackable mess. Compare QUADRAT on page 33 with TARTAN on page 35 in the classic manual (http://bbc.nvg.org/doc/BBCUserGuide-1.00.pdf).

Wow, the BBC Micro home computer. Fun Fact: it was made by Acorn Computers, and Acorn was selected as the name because it would appear alphabetically in phone books before Apple. So people think the BBC Micro just disappeared I guess, a failure that was just to be forgotten? ... The "A" in ARM processors actually stood for "Acorn". Effectively everyone has a descendant of the BBC Micro in their pockets now! They beat Intel and Microsoft!

Probably the most useful benefit of best practices for the autodidact programmer is salvageability. A project that dies from lack of relevant planning (which is almost inevitable while learning) can be raided for usable parts for the next iteration; buggy spaghetti cannot.

A good approach here is testability. You can write a framework that does unit tests, which are code that runs other code through some tests and outputs the results, giving warnings if the results are wrong. You can then design classes inside that framework and you put test data in and get it to spit out the results and compare to some "expected" results. Tests can be hierarchical too: you have code that tests your basic functions, those tested functions are then used in some higher-level code, which also gets its own tests.

Once the object works, then you import it into the main program. This also applies while learning to code as you go. Generally you'd make a main function and have it call all your other code and spit out results. Don't throw that framework code out, keep it as the start of your testing framework.

If you change a class later, you can then run the tests now and then to make sure nothing got broken by the changes. By having multiple projects inside Visual Studio for example, you can automate building a testing exe alongside the normal exe.

One thing that encourages is modularity, since it encourages you to make code that can be pulled out and run anywhere. Designing a class/object in-place means that it's often easier to let the object rely on a house of cards of other code, so if you pull it out and want to use it elsewhere then it won't work unless you jury-rig up the framework it expects to be there. This can be messy and makes it easier just to rewrite the code. Designing the object standalone in a testing framework prevents this approach.
Title: Re: I wanna make a game
Post by: delphonso on July 10, 2020, 08:22:22 am
Shit guys. I lost all will to continue.

I got caught in a hole figuring out random numbers then spent like a month learning the mathematics which I found interesting. Dunno, guys. I think I should take a course or something just for the structure/time constraints.
Title: Re: I wanna make a game
Post by: coalboat on July 10, 2020, 08:44:23 am
Apply the random number and maths knowledge to online poker and make enough money to hire programmers making your game.  8)
Title: Re: I wanna make a game
Post by: Reelya on July 11, 2020, 05:16:10 am
That's why they suggest things like 1 week game challenges. Make something in a week, and it needs to be playable and demonstrable by that point. Then rather than getting bogged down adding to the first thing, you make follow-up 1 week games, but you're allowed to strip parts out of the first one. The advantage of this approach is that rather than one big unfinished game you end up with a lot of small actually-working games. The goal is to be constantly at the "look at this thing I made" point rather than being at the "look at this code for the thing I'm planning to make" stage, which is 100% guaranteed to be where you get stuck.

In terms of, for example art, the "make big ultimate game" idea-fest thing is like getting into drawing by sketching out this huge epic mural you're going to draw, when in actuality you can barely get a stick figure onto paper. Common sense says you get good at drawing a lot of simpler pictures first, the same as common sense says you get good at making games by having made (and uploaded) a lot of simpler games first. And I say uploaded because to get a good feel for game creation you really do need other people to have played your game and told you everything that's wrong with it. Which will be most things. For a start, it might work fine on your system but probably won't work well on anyone else's. Which is the kind of thing you want to know before spending a lot of time making something.

The "learn epic coding" approach is like if you want to draw the big mural but you never actually make any other pictures first, you spend all your time reading books about perspective and learning how to do shading really well, and expect to come up with a good picture at the end despite never having drawn anything else in your life, but you just know that once you perfect all the perfect pencil-handling skills and color theory, your mural's just going to be awesome. That's why I suggest making Tic Tac Toe, Tetris, Space Invaders, Pac Man etc. If you can't make the very basic stuff you're not going to make anything better, and believe me you'll learn plenty trying to implement all of those. Anyone competent should be able to whack out working versions of those within a few days so I'm not going to be buying it if anyone says trying to make those is a waste of time that they could be spending on their epic roguelike that's going to redefine the genre. So, either way: competent people should be able to cobble together a ton of simple games quickly, and if that takes too long then the person clearly isn't competent and needs the experience.
Title: Re: I wanna make a game
Post by: Sime on November 05, 2020, 02:39:12 pm
Personally, I recommend a 'top down' approach , by searching for preexisting Github projects  that are relevant to the idea I have in mind,  and then  meticulously studying their design, architecture and use of the language.    In this day and age there  are  many great open-source projects  to learn from directly, that it is unnecessarily slow and even counter-productive to code  'bottom-up'  from scratch through trial and error.
Title: Re: I wanna make a game
Post by: Сontrast-spam on March 25, 2021, 04:34:38 am
I think this is interesting
Title: Re: I wanna make a game
Post by: delphonso on March 25, 2021, 05:42:32 pm
I have actually been meaning to post on here again.

I picked up Godot and started Harvard's free CS50 course. These two in combination have made all the difference. I feel like I'm making real progress in regards to coding, and Godot clicks pretty well with me wrt making little games for my friends.
Title: Re: I wanna make a game
Post by: nenjin on March 25, 2021, 06:02:41 pm
You know when I started trying to write a text RPG in Python, I got to the point where I wanted a hitpoint and damage system, and also dove down the rabbit hole of random number generation, and that's also what killed my drive to keep going.
Title: Re: I wanna make a game
Post by: Starver on March 25, 2021, 07:02:00 pm
@delph: Sounds good(ot!). I've no experience of your learning material, but maybe I'll even see if it can inspire me.

@nen: What was the issue? Trying to get a sensible output?
(At the most basic, maybe just emulate dice. Run a "D6" 100 times, if you need to check you've properly implemented 1..6 as ~16 chances of getting each[1]. Then you can expand/generalise it to handle "2D6", "3D20", "D3-2" (i.e. -1..+1), etc.)

Or deciding what the sensible outputs ought to be?
(That's game-balancing issues. But if you have an idea what stats a basic Level 1 character has, you could run permutations of what results they get against your ideas of the test they may encounter (vs, say, a L1 Enemy) and see what percentage of encounters, or rounds of action, go the player's way. You can write this as an 'off-game interface', either copying the shared bits back and forth between that and the 'real' thing for testing/integrating, or make that an includable module/resourcs/whatever-it's-called-in-Python.)

Maybe something else? I know I've thought things like "I won't include a map/diagram of the procedurally-generated environment's connections for a player, but I'd quite like to see one for development", at times, only to send me down my own personal rabbithole of basically reinventing my own Visio but in PerlTk, forgetting that this was never what I actually needed. Did you go beyond the necessary (such as either of the above examples, if you felt either were actually that, bare-bone output that's maybe even just straight to console and quit)... Or some other diversion/distraction? I can probably relate, whichever way!


[1] Rather than getting the 0<=fraction<1 multiplied wrongly for your own expansion of the basic rand(), or the range 0..n-1 from explicit rand(n); to which you might need to +1. Assuming Python does it that way, which I'd maybe assume it did but then test as described to confirm.
Title: Re: I wanna make a game
Post by: delphonso on March 25, 2021, 07:23:54 pm
Last time - I would basically just get stuck on wanting to do one specific thing and then slam my head into that problem until motivation died. Last time it was generating seeds from text. Last night I ran into a similar situation but walked away and thought of another way to handle it entirely - which I think is an important skill I've been missing.
Title: Re: I wanna make a game
Post by: nenjin on March 26, 2021, 11:02:32 am
It's been too long, I don't remember what I got hung up on. I imagine if i'd solved that I probably would have cranked out quite a bit more there.
Title: Re: I wanna make a game
Post by: coalboat on March 27, 2021, 03:31:04 am
Delphonso do you use libtcod or ncurses for interface?
Title: Re: I wanna make a game
Post by: delphonso on March 27, 2021, 04:05:36 am
I messed about with libtcod before. Now I'm on Godot, and don't need either.
Title: Re: I wanna make a game
Post by: coalboat on March 27, 2021, 04:19:23 am
Godot looks like a cool engine! Very modern looking.
Title: Re: I wanna make a game
Post by: delphonso on April 11, 2021, 06:31:37 am
Trekkin, do you have any resources on that? I think I've got a generally good mind for this stuff, but I know it'll be a lot of trial and error on huge, dumb mistakes.

Not to be even more of an ass, but everyone thinks that when they start out. I certainly did. It's kind of why these mistakes are so common.

Trekkin, this was a post from the first page but it is 100% correct and it bears repeating. I have a good head for math and logic, which is certainly important, but I'm also stubborn which is incredibly detrimental to my success in coding.

Not only would I keep trying the same thing, I wouldn't look for help which is incredibly dumb when it comes to like...libraries of people already solving whatever I was trying to do.

Been enjoying collaborating on a little arena game with a friend of mine. I'll post it whenever we finish it - which shouldn't be too long as the scope is very limited. A great learning experience for Godot and coding. Still enjoying the learning process.