Allegro.cc - Online Community

Allegro.cc Forums » Off-Topic Ordeals » Abandoned Projects

This thread is locked; no one can reply to it. rss feed Print
Abandoned Projects
jmasterx
Member #11,410
October 2009

An engine is really just a bunch of APIs that help you make games. Therefore, consequently if you make a game, you'll generally have an engine. You can then figure out what is reusable for other projects and make a library. Now every game you make can use this library. As you make more games you improve this library and all your old projects benefit. Therefore, make a game, and then you will have an engine.

Remember: Game Engine, not Engine Game.

Dario ff
Member #10,065
August 2008
avatar

Dario ff: I took you up on your idea. I decided to make a simple 2D game engine, but even simple game engines aren't simple (at the least input, graphics, sound, physics). Then you also have networking, AI, scripting, math library, and of course the engine core (and utilities). That is just quoting what I read on google results. Maybe a little more advanced than what my abilities can do. I'll figure out something, and if not -- oh well.

Stick to what you need. You're not gonna reinvent a car if you just need the wheels.

Plus, the first design of your engine is likely wrong and will get to a point which will need a full rewrite. :P Just get the basic functionality working(resource loading, scene management, input, simple sounds), and then try to make a simple game with it.

Striving for the "perfect" engine is an endless loop which will net you nothing. It's not as simple as, "make game" either. Just set up what you need for a basic engine and get working later. Making an engine while trying to make a game will take more time overall than if you had set it up properly first. :P

TranslatorHack 2010, a human translation chain in a.cc.
My games: [GiftCraft] - [Blocky Rhythm[SH2011]] - [Elven Revolution] - [Dune Smasher!]

Sirocco
Member #88
April 2000
avatar

Dario ff said:

Striving for the "perfect" engine is an endless loop which will net you nothing.

I concur. I prefer to work with a set of familiar code and libs I can string together loosely to fit my needs, then fill in the gaps. I get up and running on new projects fast, and don't feel like I have my hands tied.

-->
Graphic file formats used to fascinate me, but now I find them rather satanic.

Specter Phoenix
Member #1,425
July 2001
avatar

Yeah, my problem is that with me I think: I want to make a simple game engine (or game for that matter). With the engine I say, okay I need to have the core, graphics, sound, input, and physics and collision detection. Then don't know where to go from there.

In regards to a game, I think I want to make a pong clone. Then go blank because I really don't have the proper thought process developed to say ok I want this, break it down more, so I need this, break it down more, repeat til Code is ready to be written.

Then I also have issues with the logic. I messed up the drawing for Pong and was a complete retard/noob when it came to collision detection for both Pong and Lightcycles. I thought college was going to help me build, grow, and overcome this problem, but instead I seem to have fallen victim to it as I have become depressed and not coded much outside of what I know by heart. Rather frustrating to be honest. Just don't know how to fix it or combat the issue.

Emanresu
Member #12,510
January 2011

Like I said earlier, start with the core, then work your way out. You're trying to start with everything and then make the game. As far as I can tell, you don't have the thought process for that at this time.

Another thing they should have taught you in college, (which I personally loath and despise and never do myself), is pseudo coding and flow charting. Write down the steps you want to take and then write your program based on it. Draw a big picture of what you want to happen in the order that you want.

When you teach a child something, you should NEVER tell them they can't do something. That will make them want to do it more. Nothing to see here folks, move along.

Then I also have issues with the logic. I messed up the drawing for Pong and was a complete retard/noob when it came to collision detection for both Pong and Lightcycles. I thought college was going to help me build, grow, and overcome this problem, but instead I seem to have fallen victim to it as I have become depressed and not coded much outside of what I know by heart. Rather frustrating to be honest. Just don't know how to fix it or combat the issue.

Seriously? You're going to let a few little coding flaws stop you? Did you ask anyone for help, (keep in mind I haven't been here for like ten months)? Have you asked anyone to teach you how to do it better?

Change your attitude. Instead of saying: "I can't do that", say: "I don't want to do that right now". You'll only put it in your head that you can't do something, and then you won't want too.

You sound like you have a good deal of anxiety like I said earlier and I think I know where it is coming from. It sounds like you're like me and have a bad case of ADD.

"* Entoutcas has quit IRC (Quit: And the Lord said unto John; Come forth and receive eternal life. But John came fifth and won a toaster...)"
"I was in a casino, minding my own business, and this guy came up to me and said, 'You're gonna have to move. You're blocking a fire exit.' As though if there was a fire, I wasn't gonna run. If you're flammable and have legs, you are never blocking a fire exit... ...Unless you're a table."
-Mitch Hedberg (R.I.P.)
"Quit: (+[WG]sPiKie) (Math problems? Call 1-800-[(10x)(13i)^2]-[sin(xy)/2.362x].)"

Matthew Leverton
Supreme Loser
January 1999
avatar

Emanresu said:

When you teach a child something, you should NEVER tell them they can't do something.

If it is true, you should. It's quite evil to give somebody false hope just because you want to be nice.

Emanresu
Member #12,510
January 2011

If it is true, you should. It's quite evil to give somebody false hope just because you want to be nice.

??? :(
I guess I missed something as I'm not sure what you're talking about. However I've been up for way too long, haven't gotten enough sleep and your advice tends to be sound, so allow me to rephrase and somehow explain my thinking.

In my opinion, if you're going to teach someone something, it is best to avoid telling them that they can't do it due to the effects of reverse psychology. However when you are teaching/talking to yourself, (in a sane manner), I feel that you should avoid telling yourself that you can't due to the fact that you have better access to your brain and can convince yourself of something faster than someone else can if you feel it makes sense.

For example, if you try to convince yourself that you can't climb to the top step of a step stool, you may find this to be quite difficult as your brain has learned that it can usually get onto such objects, (such as stairs and other such platforms) and that you should be able to get on the stool in the same manner as before.

Next example, if you have a wall that is a few feet higher than you and the top is a bit out of reach, it would be a lot easier for you to convince yourself that it is unclimbable. Even if there are small footholds in the wall, you can still convince yourself that it isn't climbable, (unless the footholds are very obvious).

And after writing all of that, I think I do see why what I said earlier isn't of any use.

[EDIT]
And personally I feel it would only be evil if I was purposely being malignant. As it was, I feel I was being more ignorant than anything. :-/

"* Entoutcas has quit IRC (Quit: And the Lord said unto John; Come forth and receive eternal life. But John came fifth and won a toaster...)"
"I was in a casino, minding my own business, and this guy came up to me and said, 'You're gonna have to move. You're blocking a fire exit.' As though if there was a fire, I wasn't gonna run. If you're flammable and have legs, you are never blocking a fire exit... ...Unless you're a table."
-Mitch Hedberg (R.I.P.)
"Quit: (+[WG]sPiKie) (Math problems? Call 1-800-[(10x)(13i)^2]-[sin(xy)/2.362x].)"

Matthew Leverton
Supreme Loser
January 1999
avatar

I would make a big distinction between physical tasks and mental tasks. Exercising doesn't require you to acquire any skills. To lift weights, you simply lift weights. To run, you run. Anybody who fails to get in shape simply didn't try hard enough. Yes, some people have to try harder than others, but anybody can get in shape in a reasonable time given the right amount of effort.

Acquiring a skill such as programming requires mental ability that the aforementioned tasks do not. It's easy to blame the lack of effort... to say a person isn't trying hard enough. But how hard must a person try before you are convinced he cannot do it?

Yes, it's quite possible that somebody could suck at programming for the same reason he is fat and out of shape: lack of effort. But you cannot force somebody into learning a skill like you can force him into getting into shape.

Even if given infinite time anybody could learn anything, we don't operate under those conditions. So to me, when it comes to acquiring skills, not having the motivation to learn is the same thing as not having the potential because it is impossible to separate the two as an observer.

So practically speaking, if a person after two years of entry level programming classes at university is still struggling to comprehend the most basic concepts, I would feel compelled to respectfully tell him that he is wasting his time and that he should pursue other careers.

I wouldn't tell him to try harder, to do this, or to do that, and then he will succeed. Maybe, in 1% of the cases, I would ultimately be proved wrong. But I would save 99% of people from wasting money and time (and feeling miserable) pursuing things that are beyond their reasonable grasp.

It's hard for me to understand why somebody cannot learn how to program. I taught myself from books (pre-Internet) and was coding my own BASIC programs at the age of eight. But when I consider things I am not good at (basically everything else), it gets put into perspective.

This is just something I rant about from time to time. :P

(I would have responded more directly to your actual point, but I don't really understand what you're trying to say within the context of advising Clayton.)

james_lohr
Member #1,947
February 2002

[edit]

In response to Matthew's post:

I don't think it's fair to make the distinction between physical and mental tasks. Take music for example: it has at least as large a spectrum for natural talent as programming.

I do think that people have a natural innate ability which plays a very large role in defining the upper-limits to what they can achieve in most tasks (both physical and mental), which I would be tempted to call intelligence. I think IQ has a strong baring on this measure (or rather, this intelligence has a strong baring on people's IQ scores) only if the person has spent a sizeable chuck of their life solving IQ test style problems.

For example, I do very well in IQ tests because I studied maths and CS, and I'm a programmer. My mother, on the other hand, doesn't do so great even though her innate intelligence is as good, if not better, than mine. She is a good pianist, a brilliant remedial teacher, and generally good at most things she does.

That being said, I doubt she could ever be a programmer. Programming requires an acute (boring on obsessive) attention to detail and ability to follow logic through that I believe is in some ways separate from ones innate intelligence. I also believe that some programmers meet this requirement while still having an average innate intelligence, but are able to excel beyond their peers because they can doggedly follow logic through.

On game engines:

As jmasterx said, if you build a game and you follow principles such as encapsulation, reusability, abstraction etc. whilst sticking to a strict (but sensible) project hierarchy, you will end up with a game and some sort of engine.

Essentially the game acts as giant test rig, and as something to showcase the engine when it is done.

In fact those are probably the most important metrics in measuring how good a game engine (or framework if you prefer) actually is:

1) How good the actual game is
2) How well the code was written for reusability

OICW
Member #4,069
November 2003
avatar

Think it is safe to say I don't understand the logic required. I've tried to make two games and both times I needed a lot of help with code that was considered simple for beginners.

I'll try to add the rest (4 more) Create articles onto the wiki. Last week I was getting ready for presenting our school software project - a year worth of development getting judged by your 20 minutes presentation (well that and by an opponent). You can try implementing the game Phipps is describing there.

Anyway, as far as engine is concerned. I've came to conclusion that it is viable to have several boiler plate code functions/classes around so you don't have to write the same mundane code again and again. Though, I wouldn't call it engine. As others said, don't bother making engine. It's rather boring and an endless loop without any outcomes.

For the boiler plate code, basically all you need is:

  • Core functions - setting up graphics window, main loop, screen refresh

  • Resource manager

  • Utility functions - not necessarily, but it can be good to have around some advanced string functions (those STL are limited), config file routines (Allegro has them already), etc.

That means forget about implementing sound, collisions, physics etc. You can do this later when you need it. Collisions & physics depend on the concrete game you are making, so implement it just when needed. For the short outline I just gave, I think that you won't get over 500 lines of code.

[My website][CppReference][Pixelate][Allegators worldwide][Who's online]
"Final Fantasy XIV, I feel that anything I could say will be repeating myself, so I'm just gonna express my feelings with a strangled noise from the back of my throat. Graaarghhhh..." - Yahtzee
"Uhm... this is a.cc. Did you honestly think this thread WOULDN'T be derailed and ruined?" - BAF
"You can discuss it, you can dislike it, you can disagree with it, but that's all what you can do with it"

Emanresu
Member #12,510
January 2011

I would make a big distinction between physical tasks and mental tasks. Exercising doesn't require you to acquire any skills. To lift weights, you simply lift weights. To run, you run. Anybody who fails to get in shape simply didn't try hard enough. Yes, some people have to try harder than others, but anybody can get in shape in a reasonable time given the right amount of effort.

That's not what I'm saying. If you look at one of my previous posts, I referenced a link from the Mayo clinic that stated that exercise can help reduce anxiety and help you focus. Which is what he said he was afflicted by. I don't care if he's out of shape or not and I'm not going to recommend that he get into shape. That would be: "The pot calling the kettle black". I do realize that I said I was lifting some weights earlier, but that in no way means I've gotten in shape.

Matthew Leverton said:

Acquiring a skill such as programming requires mental ability that the aforementioned tasks do not. It's easy to blame the lack of effort... to say a person isn't trying hard enough. But how hard must a person try before you are convinced he cannot do it?

Depends on if they want to do it or not. He says he wants to program a game, but a few little minor details are stopping him. I'm trying to get him get over his issues, (the ones I had earlier) and start him programming again. If a person absolutely loves a game but gets stuck at the same part over and over again, do you tell them to just quit, or do you try to help them out?

Matthew Leverton said:

Yes, it's quite possible that somebody could suck at programming for the same reason he is fat and out of shape: lack of effort. But you cannot force somebody into learning a skill like you can force him into getting into shape.

There's that whole in/out of shape thing again.

Matthew Leverton said:

Even if given infinite time anybody could learn anything, we don't operate under those conditions. So to me, when it comes to acquiring skills, not having the motivation to learn is the same thing as not having the potential because it is impossible to separate the two as an observer.

He says he's having motivational issues but he has the skills. I'm recommending he build up his skills to get to the point he wants to be at.

Matthew Leverton said:

So practically speaking, if a person after two years of entry level programming classes at university is still struggling to comprehend the most basic concepts, I would feel compelled to respectfully tell him that he is wasting his time and that he should pursue other careers. I wouldn't tell him to try harder, to do this, or to do that, and then he will succeed.

I would say he's in the wrong classes then. He said he can do basics, it is the more advanced issues that he has a problem with. To be honest, I feel that college is not the greatest place in the world to learn. I'm in the computer repair field, and I've met plenty of people with degrees. I have no degrees or certificates and I blow those people out of the water. By the time you get out of college, the computer world has changed.

Matthew Leverton said:

Maybe, in 1% of the cases, I would ultimately be proved wrong. But I would save 99% of people from wasting money and time (and feeling miserable) pursuing things that are beyond their reasonable grasp. It's hard for me to understand why somebody cannot learn how to program. I taught myself from books (pre-Internet) and was coding my own BASIC programs at the age of eight. But when I consider things I am not good at (basically everything else), it gets put into perspective. This is just something I rant about from time to time. :P(I would have responded more directly to your actual point, but I don't really understand what you're trying to say within the context of advising Clayton.)

I'm going to assume that Clayton is Specter. I'm just trying to help him out with some advice that helped me. Why am I trying to help him out? Three reasons:
1) He's programming a game right now. Something I love to do. It's my hobby.
2) He's got the same issues I had/have. Anxiety and lack of focus.
3) He hit a subject that's close to home with me.

Getting really anxious and depressed to the point where I don't want to program again sends a fear throughout me. It's sad when you don't want to work on your favorite hobby. I was at a point where I didn't even want to write a "Hello world!" program and Code::Blocks will do 99% of the work for you with one of those. That is sad. :-[

"* Entoutcas has quit IRC (Quit: And the Lord said unto John; Come forth and receive eternal life. But John came fifth and won a toaster...)"
"I was in a casino, minding my own business, and this guy came up to me and said, 'You're gonna have to move. You're blocking a fire exit.' As though if there was a fire, I wasn't gonna run. If you're flammable and have legs, you are never blocking a fire exit... ...Unless you're a table."
-Mitch Hedberg (R.I.P.)
"Quit: (+[WG]sPiKie) (Math problems? Call 1-800-[(10x)(13i)^2]-[sin(xy)/2.362x].)"

james_lohr
Member #1,947
February 2002

I suspect that all he needs is a good thorough kick right up the backside. :P

Specter Phoenix
Member #1,425
July 2001
avatar

I suspect that all he needs is a good thorough kick right up the backside.

Have a wife for that and so far it hasn't worked :P. It makes me depressed more when I see people who don't know me having more belief in my abilities than I do. Wife is always telling me that I could do it if I just stop being so negative.

gnolam
Member #2,030
March 2002
avatar

Now that the thread's been terminally derailed...

Emanresu said:

Ohhh yeah, my roommate convinced me to start taking those vitamins to help me with energy and I looked up anxiety after I was haphazardly taking them. What a nice unintended effect.

Hooray for the placebo effect!

--
Move to the Democratic People's Republic of Vivendi Universal (formerly known as Sweden) - officially democracy- and privacy-free since 2008-06-18!

Specter Phoenix
Member #1,425
July 2001
avatar

gnolam said:

Now that the thread's been terminally derailed...

After 10 years of all the threads being derailed and you still feel it necessary to waste you time commenting on it? :-/ After 11 years of seeing it I don't worry any about derailing the thread because 23yrold3yrold and several other are notorious for derailing threads more so than me. Though as of late I think I'm catching up to them a little.

SiegeLord
Member #7,827
October 2006
avatar

After 10 years of all the threads being derailed and you still feel it necessary to waste you time commenting on it? :-/

Just because you derail all threads you post in doesn't mean all threads get derailed.

"For in much wisdom is much grief: and he that increases knowledge increases sorrow."-Ecclesiastes 1:18
[SiegeLord's Abode][Codes]:[DAllegro5]:[RustAllegro]

james_lohr
Member #1,947
February 2002

It's still vaguely on topic: we're talking about lack of motivation in a thread about abandoned projects.

Matthew Leverton
Supreme Loser
January 1999
avatar

Emanresu said:

He says he's having motivational issues but he has the skills. I'm recommending he build up his skills to get to the point he wants to be at.

It's not like we are discussing somebody who is giving up after a few weeks or after the first hurdle. He's been at it for over ten years with almost no results. You are wasting your time if you think your encouragement will help him succeed. His lack of belief in himself comes from the reality that he doesn't have what it takes to be a competent programmer.

That doesn't mean he's stupid or that he isn't trying hard enough. It means his brain isn't "wired correctly" for programming, and he ought to pursue other tasks. If he wants to make games, then perhaps he should just focus on modding games via level editors. It's much more kind to give him realistic advice than to pat him on the back or kick him in the butt. And when he starts doing things he's good at, his self confidence and attitude will improve.

Telling somebody that they ought to be able to do something that they cannot do despite trying very hard is only going to make his or her depression and lack of confidence worse. When you come to the understanding that you have limitations (like everybody else), it's much easier to handle defeat.

And even if he could eventually do it, it's dumb to spend a thousand times more effort than a "regular person" does to accomplish the same task. e.g., If it took me two hours every morning to put on my own socks, then I would get somebody else to do it for me. That doesn't mean I'm a quitter or have no faith in my abilities, but that I'm realistic about how I should spend my time.

james_lohr
Member #1,947
February 2002

And even if he could eventually do it, it's dumb to spend a thousand times more effort than a "regular person" does to accomplish the same task.

We're all still the same species, and so unless he's got a specific learning difficulty, I doubt it's going to be worse than 1.5 - 2 times a "regular" person's effort. Humans are very versatile creatures, both mentally and physically; we're remarkably good at compensating for weaknesses if we're willing to spend the time to learn coping strategies. This is how remedial teaching works: it's all about teaching children strategies (or "work-arounds") for their weaknesses.

If you're missing all the fingers on your right hand being a pianist is probably not a realistic career choice, but still possible if you're persistent enough.

For this reason I'm more inclined to agree with Emanresu: even if he isn't optimally "wired" for programming, if he were to believe that he could do it and put the effort in, he would probably be able to achieve just fine.

...also, if we're all patronising enough he might get is arse into gear and write a game out of pure embarrassment. :P

Sirocco
Member #88
April 2000
avatar

gnolam said:

Hooray for the placebo effect!

Speaking of thread derailings...

I always laugh a little when I come across that word (placebo). It sounds like some sort of Japanese demon; perhaps the small, perverted sort that flies around sneaking peeks up girls' skirts.

:D

-->
Graphic file formats used to fascinate me, but now I find them rather satanic.

Arthur Kalliokoski
Second in Command
February 2005
avatar

If it took me two hours every morning to put on my own socks, then I would get somebody else to do it for me. That doesn't mean I'm a quitter or have no faith in my abilities, but that I'm realistic about how I should spend my time.

This has so much to do with Adam Smiths invisible hand it's incredible.

We're all still the same species, and so unless he's got a specific learning difficulty, I doubt it's going to be worse than 1.5 - 2 times a "regular" person's effort.

It's widely known that the programming field is unique in that ability can be a thousandfold different between individuals.

http://catb.org/jargon/html/S/superprogrammer.html

I'd say I can program well enough that I'm not "wasting my time" but I'd say Matt could usually code a certain algorithm ten to fifteen times faster than me based on his answers to programming questions here.

They all watch too much MSNBC... they get ideas.

Specter Phoenix
Member #1,425
July 2001
avatar

SiegeLord said:

Just because you derail all threads you post in doesn't mean all threads get derailed.

Yeah the only threads that get derailed are the ones that provoke enough thought to cause people to talk and bring in other tangents that coincide with the main original topics. The ones that stay on topic are boring and cause no real conversation potential. :P

weapon_S
Member #7,859
October 2006
avatar

With the engine I say, okay I need to have the core, graphics, sound, input, and physics and collision detection.

What would you want to do with graphics and sound? Input (when building a generalized system) and physics/collision detection are pretty extensive projects, that could be objectives on their own. I get the impression most games here are written for one purpose only (i.e. use no general framework); if code is reused it is hacked away from a previous project, and hacked into the current project. (Or they use a 'framework', which is discarded for the next project.) It's not a crime to write one use code, unless you are a professional :P

As someone who is struggling himself with getting a decent game done, I can say: it's better to have shit that works, than to have perfection that doesn't exist.

Physical fitness... yeah, that helps too. I've been out of shape for the last year. Better work out a little :-[ I believe the novelist Murakami also worked on his fitness to become a better writer. (And he's pretty good ;D )

Two rules which help me with coding:

  • First make it work; then make it work well.

    Even when properly thinking out a framework, there will be some use cases for which it is unfit. You first write a program that does what you want. Then you generalize and/or make classes to do a lot of work for you. If it yields a reusable framework: excellent. If it doesn't: your code will at least be cleaner.

  • If you don't use it, don't code it.

    When doing the functional part[1], you would have to see a difference the next time you compile it. Working several days on one function is OK, putting in a function you won't be using in your program for some time is not OK. This also ensures you write and rewrite the functionality in one go; you don't have to study a problem you studied a year ago, because that was when you wrote that broken function. Of course there can still be flaws in a function you wrote a year ago... Thinking of edge cases or feeding random/interesting arguments to your function can help you find errors ASAP. (There might be cases where you want your function to fail gracefully.)

Yeah the only threads that get derailed are the ones that provoke enough thought to cause people to talk and bring in other tangents that coincide with the main original topics. The ones that stay on topic are boring and cause no real conversation potential.

Yeah, arguing is humanity's greatest merit. :P

References

  1. i.e. not clearing up code, and rewriting to do the same thing. The exception being optimization: you'd have to see a significant difference immediately (even though it does the same task).
verthex
Member #11,340
September 2009
avatar

weapon_S said:

Two rules which help me with coding:

Three...maybe have a shot of liquor to mellow me out.

Tobias Dammers
Member #2,604
August 2002
avatar

weapon_S said:

It's not a crime to write one use code, unless you are a professional

Whether anyone pays you to do it is absolutely irrelevant. Bad code is bad code, and good code is good code.

The thing is, though, that "code reuse" is a misunderstood concept. "Write reusable code", also known by the names "DRY Principle (Don't Repeat Yourself)", "Single Source of Truth", "Refactor Early, Refactor Often", "Simple Is Better Than Complex", "KISS (Keep It Simple, Stupid!)", etc., means that within one project, you should strive to eliminate redundancy. If you have a function that calculates the average of a bunch of values, it better be the only function in the project that does so. It does not mean that you should write a library with a function that solves all facets of number-averaging that you will ever encounter in any project.

Because what it comes down to is that writing reusable code (and taking advantage of it) within the scope of one project is relatively easy and yields impressive results in the long run, in terms of maintainability and extensibility, but writing a library (which has much larger potential scope, needs more testing, needs to take all possible future usages into account) is harder by a few orders of magnitude but doesn't yield much additional benefit.

Personally, I avoid redundant code like the plague, partly because I'm too lazy to solve the same problem twice, and partly because I've seen to many projects that almost collapsed under the sheer amount of code they contained (and any change would potentially break things elsewhere, where other code relied on two implementations of the same thing being roughly equivalent). I only turn something into a library when it turns out that I am really going to reuse it more than two or three times, which has happened maybe once or twice in my entire programming life.

---
Me make music: Triofobie
---
"We need Tobias and his awesome trombone, too." - Johan Halmén



Go to: