Search Unity

Coding/Programming games & scope width

Discussion in 'Game Design' started by SynapticBytes, Oct 19, 2019.

  1. SynapticBytes

    SynapticBytes

    Joined:
    Sep 26, 2019
    Posts:
    26
    Hi all,

    I love games that involve coding, such as Core War, Robocode and Screeps. Not so much games such as Gary's Mod, but that's more an issue with my time constraints more than enjoyability. Even games like Screeps I have trouble finding time to play, but I still enjoy it.

    I've been a programmer for 35 years both professionally and as a hobby, but due to personal issues, I haven't done any serious programming for the last 5 years. I picked up Unity about a month ago, and discovered MiniScript a couple of weeks ago. It's an elegant and graceful scripting engine that is perfect for building a programming game, so I am now brainstorming ideas.

    My question is, how do people feel about the breadth of scope that a programming game allows? It seems to me there are 3 types :-

    1. AI programming - you code your own intelligence into game objects that usually then go and battle one another to the death

    2. Puzzle solving - you write code to solve puzzles presented, instead of the usual point & click puzzle solving

    3. Learning games - games that teach others how to code

    4. Building games (MineCraft and Gary's Mod etc) which I will ignore for this conversation as I feel they are a different beast.

    The style I enjoy the most is the AI programming type, but I feel it has inherent limitations in that experienced people can steamroll new players, which is a big barrier to growing your player base, and there is the possibility that there is an optimal strategy, which once discovered, kills the game. I have thought of some minor variations on this, such as scripting your own in-game elements in single player games, such as maybe programming your own smart bombs in a strategy game, but whether that'd be enjoyable if it was just a side mission in a larger standard game, I'm not so sure.

    I do also like the puzzle solving style, such as the games from Zachtronics, like TIS-100 and Shenzhen I/O but the challenge of pitching one players script against another player is more interesting to me, although not by a lot.

    So what do others think? Is there any other main category of programming game that I've missed? Do you think the scope of design for programming games is large enough to have a place in the market? I realise programmers are the main target audience, but I think there's enough of us these days to consider it a viable playing field.

    I'd appreciate any thoughts on how you feel about the category and ways to expand it's reach.

    Thanks.
    Russell.
     
    TonyLi and JoeStrout like this.
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    I like AI programming, too. A few years ago, @JoeStrout held a MiniScript AI programming competition, Robo-Reindeer Rumble. (The web version uses the old Unity webplayer, so it's not easily playable in modern browsers.) I thought my contenders were doing pretty well until Joe dropped a fairly straightforward but brutally effective competitor into the ring and crushed all competition. I had some ideas for more complex AI that might have tipped the scales, but I didn't have time to implement them. But then again maybe not. Sometimes a simple, clever idea can beat out a more complex system.

    While multiplayer competition is always fun, I'd enjoy a single-player mashup of AI programming and puzzle solving in which you write AI to solve open-ended puzzles or challenges. I think a large segment of Zachtronics players would be into it.
     
    JoeStrout likes this.
  3. SynapticBytes

    SynapticBytes

    Joined:
    Sep 26, 2019
    Posts:
    26
    Yes true, sometimes complexity is not always the answer.

    Thanks for the feedback.
     
  4. Steve_Stevens

    Steve_Stevens

    Joined:
    May 3, 2016
    Posts:
    35
    There was a game I played in the early 80's on my Apple ][ called robot wars. You had command blocks that you wrote for the robot. It was really neat and was my 1st introduction to AI. I had already been coding for a over year, so learning to play that game was pretty easy.
     
  5. Martin_H

    Martin_H

    Joined:
    Jul 11, 2015
    Posts:
    4,436
    I think the zach-likes offer something that player vs player challenges can not: a possibility-space with lots and lots of valid solutions for a challenge, that still can be measured on different vectors of efficiency against each other to compete with others indirectly or with yourself while striving for a more elegant solution. Plus they also handle story very well in the context of their fairly abstract games. I have doubts that you would be able to replicate the core strengths of the zachlikes in any form of pvp AI programming game. Also the feedback for how close you are to the solution is much clearer in the zachtronic games. You'll have a hard time communicating to a player why their AI lost exactly vs the other AI. So while I understand that this may sound boring to you, I would recommend to stick fairly closely to the zachtronics formula or at least find close alternatives for each individual aspect of those games, that make them (fairly) accessible and satisfying to play.

    P.s.: Also how are you gonna balance a difficulty curve if you focus on pvp? If you want to make an AI programming game, I think the opponent AIs would need to primarily be predetermined so that you can make the challenge increase gradually.
     
  6. JoeStrout

    JoeStrout

    Joined:
    Jan 14, 2011
    Posts:
    9,859
    FYI the game is available in a WebGL version here. I'll expect to spruce its page up a bit and hold another friendly competition over December and January.
     
    TonyLi likes this.
  7. JoeStrout

    JoeStrout

    Joined:
    Jan 14, 2011
    Posts:
    9,859
    This is a good point. But on the other hand, my major beef with these types of games is often that you can't measure elegance, but only efficiency (of time or instructions). As a result the game feels little like "real" programming to me, but more like hand-optimizing assembly code. Still fun, but a very different skill than what's required to excel at programming in a high-level language.

    Part of the problem there might be that writing a short program in a high-level language doesn't usually feel clever. Those skills I value in real work (breaking a complex problem up into smaller ones, organizing code to hide complexity, leaving the doors open to future refactoring, etc.) only become valuable in large projects. And it's important that the user feel clever and get that sense of accomplishment.

    On the other hand, it may not feel clever to me only because I've been doing this for so long. ;) If a game is targeting new programmers, the sense of accomplishment probably comes from the sheer joy of making something happen according to your command. In that case, you'd amplify the experience by ensuring that what they can make happen is cool through particle effects, sounds, etc.

    Another good point. Any PvP game suffers from the problem that new players get swiftly crushed by experienced ones, and that's no fun.

    But a ranking system can help, and here actually an AI game has an advantage over most PvP games, because you (or rather, your bot) could be "always online" and up for a match. So if you had some sort of ladder system that constantly sorted all known bots by their effectiveness, including some truly stupid ones, then your goal would be to see how high up the ladder you can get. Even a new player would be able to get some victories, and could ignore the highest-level bots while focusing on beating ones near their own level.
     
    Martin_H likes this.
  8. JoeStrout

    JoeStrout

    Joined:
    Jan 14, 2011
    Posts:
    9,859
    A good model might be something common in RTS and FPS games: a single-player campaign, with a story and a steadily increasing difficulty curve; and then an online competition mode.

    And as noted above, the "online" mode doesn't require the other player to actually be online at the time. Or to filp it around, you don't need to be online while your bot is fighting for your honor and glory. When you fire up the game, you could see how your bot has changed in the rankings, and even review the battles it fought while you were away. (This would be a major draw to keep periodically launching the game, which is pure gold from a business standpoint.)

    I do wonder though whether there's something more interest/innovative that could be done besides "program my bot to bash your bot until one of them stops moving." Maybe something more like an RTS with multiple units, and resource-gathering and building in addition to combat? Or maybe try to get away from combat entirely, and target nontraditional players that prefer a less violent objective?
     
    Martin_H likes this.
  9. jhgoodwin

    jhgoodwin

    Joined:
    Oct 19, 2019
    Posts:
    1
    Alternate options for AI powered games, or more focused goal setting:
    * Creativity - eg creation of artworks to share
    * Cooperative - by combining with others, a complement is created and as a team aggregate, you accomplish your objective.
    * Discovery - Exploration is it's own reward.
    * Maximization/Minimization game - Higher the score, the better. Someone once told me of a mobile app where this is done. This could be done w/ traditional units like score, or money, but could also be used for things like minimizing total electrical consumption in circuits, reducing max loads, efficiency of algorithm.
    * Impossible game style - Learning to win when any mistake makes you lose.

    Then, there's application to commercial endeavors:
    * Code some small function/need a business owner has - who might pay for the prize
    * Proctoring - identifying similarities - could be used for many purposes.

    Just a few ideas. Good luck with your project!
     
  10. SynapticBytes

    SynapticBytes

    Joined:
    Sep 26, 2019
    Posts:
    26
    Thanks for the comments folks.

    i do suggest those of you who haven’t seen it before, checkout Screeps. It bills itself as an MMO sandbox game for programmers, and technically speaking, that’s what is is. It has building, resource gathering, trading and PvP, and runs 24x7 whether you are there are not. I see it more as an RTS where you create the game AI.

    Massively multiplayer is a little stretch as you’re on a confined grid with dozens of other players nearby, not thousands unless you travel across the whole gamespace, which isn’t the point, , and sandbox is also a stretch. True you can do what you want of the available activities, but the range isn’t that huge, although they’ve just made a big update which expands things. It really is a masterpiece of design when it comes to programming games, being miles ahead in scope, of anything that has gone before. This is what I aspire to, if I can come up with my own unique concept, but it is years ahead of where I am currently.

    My two concerns with Screeps are new player experience, and the difficulty. Like all MMO’s, it takes a fair bit of early “grinding” before you get to the fun stuff (although it mostly happens offline) and you are slightly at the whim of you fellow players (but they do try and mitigate this to some degree). The difficulty comes in the breadth of the API, the fact you are programming in JavaScript, and the sheer amount of coding you have to do to be successful. This is the catch-22 of programming games. How do you make them deep & meaningful, without making them a chore, and you need a catch-up mechanic, so new players aren’t always behind.

    Russell.
     
    Last edited: Oct 19, 2019
    JoeStrout likes this.
  11. SynapticBytes

    SynapticBytes

    Joined:
    Sep 26, 2019
    Posts:
    26
    Fantastic suggestions to give me a whack on the side of the head, thanks very much! :D
     
  12. SynapticBytes

    SynapticBytes

    Joined:
    Sep 26, 2019
    Posts:
    26
    I was just reviewing the Screeps website to get my facts right, and I see they are building a new offshoot of Screeps, called Screeps Arena. This will be a 1v1 battle arena format. It’s interesting they are going this way, but I see why, and brings the conversation back around again, to what todays players are looking for.

    The core gameplay of Screeps is “slow”. When you start, you write some code to start gathering energy so you can build stuff, and then come back a day later to see what you’ve gathered so you can improve your game (a simplification, but you get the idea). So you have to be a patent person to advance in the game. I think Screeps Arena is an effort to grab the attention of those looking for a quicker feedback loop. This brings us back to the play style of Robocode/CoreWar with all its pros and cons.

    They seem to have identified the major obstacles by offering varying and changing arenas, so one dominant strategy shouldn’t emerge, and they will have a ranking system, which will hopefully give newbies a chance, as long as it can’t be gamed. It’ll be interesting to see if it brings something new to the genre while overcoming the inherent drawbacks.

    Russell
     
    JoeStrout likes this.