Ramendik

Finding a project to join and learn?

Recommended Posts

Ramendik    0

Hello,

I am in Ireland. I am in IT for 20+ years, I code in Python and Java, but never developed games and am not really familiar with game-specific libraries and engines.

My son is 12 and understands the basics of coding. He is interesting specifically in game development. I would support him in getting in there, but we don't have a good idea nor, really, the capability to do something from scratch.

I think it would be best for him to join some open source game project and do "grunt work", stuff that is boring for experienced adults. I would certainly help him in working out the technical particulars if he joins a project and needs to be using such-and-such tools.

But how can we find a project for him to join, one that would allow him to learn as he does mundane tasks for it? A sort of apprenticeship - except without money involved and without them having to teach him all the details. I can help him do the research if I know the general direction.

 

Share this post


Link to post
Share on other sites
frob    44973

Moving to the career area of the site since it is a slightly better fit.

At age 12 he should probably have a good idea of what he wants to work on. At that age I'd encourage him to follow whatever interests he has rather than trying to do the boring stuff. He should be exploring, tinkering, and learning freely as he goes to whatever interests he has, in addition to exploring ideas and subjects outside of computers.

There will be plenty of time in life to do the grunt work, to fill in all the pesky implementation details, and to do the drudgery and daily grind.

By freely exploring and experimenting he'll be highly motivated to do whatever he wants to do at the moment, and with that motivation he'll read and study more, he'll try more options and learn from mistakes, and he'll push harder to make the systems do whatever he wants them to do.

Share this post


Link to post
Share on other sites
Alberth    9525

Why don't you let him program by himself? Python is a good language, it has a friendly community, dad knows the language, and there is pygame, a simple SDL layer for displaying graphics, and play sound, etc.

Another option is Scratch, which is totally kids oriented. I browsed the site once, and was amazed at its size, but that's about all I know about it.

 

Give him some tools, and let him play and explore. Dad can learn too, before long he'll tell you how to do things :)

Share this post


Link to post
Share on other sites
Ramendik    0

Dad knows the language but dad stinks at graphics. And son is not great at that, too. We don't have an artist, which sort of makes independent development impossible, except if we head into roguelikes :)

I could theoretically write up a parody roguelike, but we're talking serious retro here. Just how many players would even understand a humorous rendition of current events that requires understanding of Nethack? Not to mention the fact that roguelikes are not generally entertaining for most 12 year olds.

Without an artist we're stuck with either text UIs or repackaging of current games (I sorta wanted to push him to remake Sopwith in Scratch but what's the point?). And yeah. he did use Scratch and more or less grew out of it. I was considering Stencyl, what with its really cool graphics engine - but again nothing works without original art.

And we're not bursting with really good ideas, either.  

Edited by Ramendik

Share this post


Link to post
Share on other sites
Kercyn    453

There are tons of free assets that you and your son can use to make your game without spending anything. Sure, the art style of some assets will not completely match the style of other assets, but you can't have everything. You might want to take a look at OpenGameArt or here.

Edited by Kercyn

Share this post


Link to post
Share on other sites
JulieMaru-chan    332

I would recommend tinkering with some libre games he likes, maybe even contributing to one. What kinds of (offline, non-MMO) games does he like? I'm a libre gamer, so I know of quite a few games that he could try tinkering with and could give some suggestions.

Edited by onpon4

Share this post


Link to post
Share on other sites
Ramendik    0

I asked what kind of games he likes, he tends towards realtime strategy.

A classic-style RTS (like my old favourite, WarCraft II) might be tricky to develop on one's own because an AI is not easy to make, but we could look into either PvP RTS (non-massive) or perhaps tower defence (unlike proper RTS, tower defence does not depend on an AI).

One idea I had right now is to make a WarCraft-like PvP RTS with a scripting mechanism, so that anyone (ourselves included) could develop a full AI or "assisted play", with AI vs AI play a possibility. But the idea sounds a tad too obvious. Someone probably already did this? (DOTA seems to have Lua scripting, is that it? Never actually played it, from people who do play I heard they abandoned the resource aspect of WarCraft and it was a huge turn-off).

Also, one still needs a server for non-massive PvP over the 'net, but this might be doable (especially if one piggybacks on a protocol like Jabber and the server is just a standard thing; one would need one of the clients to be the master, enabling cheating, but really who cares).

Despite all this talk, an RTS based on freebie graphics is likely to look like that much garbage. I'm decent at writing and could make up lore, but even good lore with bad graphics...

(I actually have a ready set of lore for some years, but it has IP issues and can be seen as 18+ ; basically, a somewhat alternate Earth military invading John Norman's Gor. Come to think of it, this can be laundered pretty quickly, but still, freebie graphics might mean a fail).

Share this post


Link to post
Share on other sites
Ramendik    0

Upon some research - should I just let him loose on SpringRTS, let him play a few games based on the engine, then point him to a Lua tutorial and see if we can build one of our own? This seems like a play+development community not unlike Scratch but not that kindergarten-ish? And it already has the approach to AI development that I like.

The main downside is that SpringRTS game development appears to be all in Lua, but really, it's just another language. Not as fun as Python, perhaps, but still a language.

 

Share this post


Link to post
Share on other sites
Alberth    9525
12 hours ago, Ramendik said:

A classic-style RTS (like my old favourite, WarCraft II) might be tricky to develop on one's own AI

It has more problems even without smart AI, there are lots of autonomous concurrent movement going on, and stuff like path-finding, it's a difficult genre to program.

What we usually suggest to beginning programmers are games like pong, tetris, space-invaders.  Much easier to program, yet plenty of challenge to get it all done. Maybe your son should start even simpler, with hangman, fifteen puzzle, 2048.

Don't aim for the high-end until your son can handle it.

13 hours ago, Ramendik said:

One idea I had right now is to make a WarCraft-like PvP RTS with a scripting mechanism, so that anyone (ourselves included) could develop a full AI or "assisted play", with AI vs AI play a possibility. But the idea sounds a tad too obvious. Someone probably already did this?

So who is programming here? Dad or Son?

Why does it have to be "new"?

13 hours ago, Ramendik said:

Also, one still needs a server for non-massive PvP over the 'net, but this might be doable (especially if one piggybacks on a protocol like Jabber and the server is just a standard thing; one would need one of the clients to be the master, enabling cheating, but really who cares).

Right, a 12-year old doing networking and servers, piggy-backing over jabber. Sure, tbh I'll believe it when I see it.

 

If you want to program games too, that's fine, by all means go for it, it's fun! Programmable RTS by Jabber sounds like a fun project even if it was already done.

However I think it's a bad idea to apply your capabilities and your standards onto your Son. Give him room to do things his way and let him make his own choices, be an enabler, be a guide, be a supporter, even if the result is not what you expect.

 

13 hours ago, Ramendik said:

Despite all this talk, an RTS based on freebie graphics is likely to look like that much garbage.

He isn't anywhere near an RTS, I think. Also, whose standards are speaking here?

Objectively, no doubt you are correct. I suck at graphics too. Truth is, getting good at graphics is as much work as learning to program, and I never spend the time. The question is, does it matter?

If you aim for selling the game, yes it does. If you aim for a 12-year old doing random programming and having fun, exploring the world, and finding his way around challenges, it does not, imho.

Let him find a solution for it. Maybe he'll draw something. Maybe he grabs something from somewhere, maybe he gets inspired in pixel drawing. Whatever it is, it works for him, be happy for him.

If stuff looks like it's going to be serious, buy him some art for his birthday or so.

Share this post


Link to post
Share on other sites
JulieMaru-chan    332
14 hours ago, Ramendik said:

I asked what kind of games he likes, he tends towards realtime strategy.

Oh, that's easy. There are tons of those. Just a few off the top of my head:

  • Warzone 2100
  • MegaGlest*
  • Globulation 2
  • 0 A.D.

* I would highly recommend MegaGlest. I've made scenarios for it before; it uses really simple Lua scripting. Plus it's an awesome game. OK, probably not as awesome as proprietary RTS games, but still awesome.

The Libre Game Wiki has its own category for RTS games, if he'd be interested in tinkering with others:

https://libregamewiki.org/Real-time_strategy_games

Share this post


Link to post
Share on other sites
Ramendik    0

Thanks, I think with this and the other RTS-specific thread I'm good.

There are advantages and disadvantages to different approaches. SpringRTS seems to be an easy pathway to RTS fun without spending the enormous time needed to implement the basic logic (including pathfinding), but somehow it is not very popular on this site. What I'll do is sit down with him and start tinkering with a few different things (Spring included) and see where it goes. This is the advice I got on the RTS thread, but I will also include the games mentioned here; MegaGlest, notably, seems to take a similar approach to scripting as SpringRTS but it might be more suitable as a start if he picks the "make a bot first" route.

I will certainly give him the option of starting with simple retro games, but I strongly doubt he will take it up. I suspect he will look for the shortest route to creating something with brag value (among his peers who can't really code). He would want to make a game that other kids his age, specifically those he knows personally, would find genuinely entertaining. This is certainly a lower bar than "marketable", but it is *a* bar. Taking a longer time to do it would probably be an acceptable trade-off.

At least, in woodworking (his other interest where I can help much less as he already can do much more than I ever could) he gravitates towards making whatever his classmates want to get, literally from a sword to a dollhouse part.

And in the modern software world, the easiest way to such a product is to stand on the shoulders of giants; learn to incorporate things that already exist and are freely available, not code everything on his own. This is one thing I am going to teach him, because it is quite true outside of the game world. And this is what might enable him even for RTS; I do realize the features I listed are complicated - more complicated than I thought at first - but they are all already implemented. So it will have to be a discussion of libraries and engines, followed by trials of same.

...and then he will watch a lot of videos. Because he always does that, whatever the subject. (That's where he gets his woodworking tricks...)

Edited by Ramendik

Share this post


Link to post
Share on other sites
Alberth    9525
2 hours ago, Ramendik said:

learn to incorporate things that already exist and are freely available, not code everything on his own. This is one thing I am going to teach him, because it is quite true outside of the game world.

The game world is much more pushing against the limits of a computer system, high frame-rate (16ms to do "everything"), complicated algorithms, big worlds, believable realistic environment all push in that direction. At mobile systems, reduced computer power is added. The embedded systems world has the real-time requirements (a little harder, often), but often less complicated algorithms, or less massive (simulating 2000 enemy soldiers isn't needed :P ). Any user-interactive program responds in matters of whole seconds, which is eons in computer terms.

In the latter the cost of developing everything dedicated to that program is not worth the benefit, faster response time isn't needed enough. In the game world, optimizing stuff to death is required to stay ahead of the competition, since that one killer feature makes or breaks the game sales. To get that, you write a fully dedicated program carefully tuned against the processor strong and weak points, exploiting the L1, L2 caches, etc.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

    • By Luigi Lescarini
      Hi,
      i’m trying to build an effective AI for the Buraco card game (2 and 4 players).
      I want to avoid the heuristic approach : i’m not an expert of the game and for the last games i’ve developed this way i obtained mediocre results with that path.
      I know the montecarlo tree search algorithm, i’ve used it for a checkers game with discrete result but I’m really confused by the recent success of other Machine Learning options.
      For example i found this answer in stack overflow that really puzzles me, it says :
      "So again: build a bot which can play against itself. One common basis is a function Q(S,a) which assigns to any game state and possible action of the player a value -- this is called Q-learning. And this function is often implemented as a neural network ... although I would think it does not need to be that sophisticated here.”
      I’m very new to Machine Learning (this should be Reinforcement Learning, right?) and i only know a little of Q-learning but it sounds like a great idea: i take my bot, making play against itself and then it learns from its results… the problem is that i have no idea how to start! (and neither if this approach could be good or not).
      Could you help me to get the right direction?
      Is the Q-learning strategy a good one for my domain?
      Is the Montecarlo still the best option for me?
      Would it work well in a 4 players game like Buraco (2 opponents and 1 team mate)?
      Is there any other method that i’m ignoring?
      PS: My goal is to develop an enjoyable AI for a casual application, i can even consider the possibility to make the AI cheating for example by looking at the players hands or deck.  Even with this, ehm, permission i would not be able to build a good heuristic, i think
      Thank you guys for your help!
    • By Jan Haas
      Hello,
      I just found out about https://github.com/shader-slang/slang. It's a shader language and accompanied by a library that is supposed to make it easier to work with modular shaders.
      What do you think about that? 
      Here is the paper that describes the concept: http://graphics.cs.cmu.edu/projects/shadercomp/he17_shadercomp.pdf
      Thanks in advance
       
    • By Alpha_ProgDes
      So I've been reading about and watching videos about Smalltalk. It seems like an interesting language and damn near the Father (or Godfather) of all things OOP. But it got me thinking, what languages should a programmer know or even be proficient in to be a dependable programmer (couldn't think of a better word than "dependable")? After giving it some thought, I came up with this list.
      At least 1 programming language from:
      Lisp family of languages ML family of languages Smalltalk family of languages And also the C programming language (not the family, just the language).
      I think this covers all facets of programming and ways of tackling problems. I don't think there's any other language, thinking most of the modern languages, that has done anything that 4 listed above haven't already done. I'm not counting languages like Julia, R, Perl, or Erlang, because they are languages, AFAIK, that seem to solve a very specific problem. They can be general purpose, but again, AFAIK, they're not meant to be.
      Of course, agreements, disagreements, thorough takedowns, and/or overall discussion are welcomed.
    • By akaudio
      Hi, my name is Alex Mars from sound design studio AK Audio.
      I am making sounds for the very interesting game that is a tower defense style. The game is about a fantasy world with magical creatures such as Golems, Gryphons, zombies, yetis and so on. I need to create an attack, spawn, and death sound for each creature. Most of the time I needed to record sounds with my voice. My voice mostly suits the sound for a gnome or an elf but not really for a huge angry creature. Yet every character sound is used with my processed voice.

      Another example of using Dehumaniser when making sound design for character called Wyvern.

      Hope you liked this tutorial. Please let me know if you have any questions. 
    • By hyyou
      I encapsulated Physics and Graphics with ECS successfully.
      Here is a simplified version :-
      Physics Rigid Body = Physic_MassAndInertia + Physic_Transform + Physic_Shape Graphic Polygon Body = Graphic_Transform + Graphic_Mesh I usually set their transform via :-
      findService<Service_PhysicTransform>()->setPosition(physicEntity,somePos); findService<Service_GraphicTransform>()->setPosition(graphicEntity,somePos); It works so nice, and there is no problem in practice, because I always know its "type" (physic/graphic).  
      However, I notice that Physic_Transform and Graphic_Transfrom are very similar and duplicate.
      For the sake of good practice and maintainability, I consider to group them into Generic_Transform.
      findService<Service_Transform>()->setPosition(anyEntity,somePos); //cool However, there is a little difficulty.  The physic transformation is quite complex for a child inside a compound body.
      Assume that a physic body B is a child of a compound body C.   In this case, B's transformation component currently has no meaning (by design).
      If I want to set the child transformation setTransformation(B,(x,y,45deg)), my current physic engine will not set the B's transformation directly - it will set C's transformation that make B's position match (x,y,45deg).

      Thus, it is not so practical to group them, except I code it like (ugly and worse performance):-
      class Service_Transform{ public: void setPosition(Entity B,Vec2 pos){ bool checkIsPhysic = .... //check if B is physic if(checkIsPhysic){//physic Entity compound = .... //find C ComponentPtr<Transform> cCompound = compound.get<Transform>(); cCompound->pos=pos*someValue; //calculate some transformation for C }else{//graphic ComponentPtr<Transform> cTransform=B.get<Transform>(); cTransform->pos=pos; } } } Should I group them  into 1 type of component?  
      I probably should not group them because its meaning and related implementation are very different, but I feel guilty ... I may miss something.
      Advice about other things are also appreciated.  Thanks.
      Edit: Hmm... I start to think that grouping component is OK, but I should still use 2 function (from different service/system).
      Edit2: fix some code (pointed out by 0r0d, thank)
  • Popular Now