I figured that we should as well make our own video game to TAS.
The reasons why are multiple:
You don't need one to make a game.
It is part of our profile. What we put into it says something about who we are.
We can add tas capabilities to it.
As for the platform, I am willing to suggest Flash for the simple reason that I have worked with it a lot and find that it takes care of boring things like displaying stuff and memory management while having enough features to do this. It also has the side effect of allowing anyone to watch real moviefiles without the quality drop from a video encoding.
As for the game genre, it is sideview 2d platforming.
As for plot, I don't really have much to say, perhaps cast our bots in some important roles or something?
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
If you do it, I have to be the final boss, and nearly impossible, and I mysteriously vanish when you win, and some remark about how you only think you've won, but it's really part of my master plan.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
There have been other threads about making videogames on these forums. Short version: making games is a lot of work. Good luck, but don't expect to get much help from other people until the project is at least 50% done already.
I've heard that Flash doesn't really have the same concept of a "frame" that emulators use. Doesn't mean a program using frames couldn't be written, but it wouldn't really be given to us for free like it would be in other systems. My personal recommendation would be Python + Pygame.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
I know how flash works. I even wrote an article about this. Flash most certainly has frames.
As for getting help, yes I know how likely you are to find help. I would do it myself, but I have another project that I want to finish first and it is a big one.
I'd love to help create such a game. But not from scratch. Too risky.
Flash doesn't strike me as a good choice. It's not very performative nor accurate, is it? I suggest using Python or .NET.
LUA support might be a good thing to have, as it seems to be a language most TASers know. The core engine could then probably be reused for creating similar games.
I think the concept has great potential and more people would be willing to participate, but only once they see first promising results.
... which is what makes flash a bad candidate for serious development work. Even just rendering a frame takes a ton of CPU cycles, so an actual game with complex program logic is not going to run well unless you dedicate a whole lot of work to just dealing with Flash's issues.
If you want to make a full game that people will enjoy, and not just a time-wasting minigame, you'll have to use a more robust programming language, like C++ or java or even visual basic.
Python isn't a good bet for a number of reasons, like performance.
How fleeting are all human passions compared with the massive continuity of ducks.
Python is easy to get into and easy to produce quick and decent results with, but I agree it's not the best choice.
Personally, I'd prefer C++ too (or C#?).
Java isn't very performative either for tasks like that from my experience.
I'd argue this isn't nearly as much a problem as you think it is. The vast majority of logic for a game involves things like vector math, loading/unloading resources, handling input/output (including drawing to the screen), and making AI decisions. Of those, in Python three at least would be handled by high-speed, precompiled libraries (Numpy for vector math, and Pygame/Pyglet for resource management and drawing), leaving just the AI in "pure" Python. Even then you could trivially convert your AI code to a precompiled version by using something like Cython, reaping all of the gains of Python except for loose typing and most of the gains of a normal compiled language.
Sure, it's not going to achieve the speed that a C++/Java/etc. program would get you, but it's not going to be remotely sluggish either, and, all else being equal, Python is far easier to develop in than any compiled language I've ever worked with. And, to be quite honest, most indie games aren't complicated enough to need the extra performance given by working in a lower-level language.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Flash does use a recompiler to recompile to native code. It is nearly as fast as native code. It uses handwriten asm for the rendering in the tight spots.
I say, the Flash rendering system is quite good for what it is doing. It has it's weaknesses, but in general, it is more than fast enough. Also keep in mind that there are benefits for vector graphics. But if you find them lacking for something, there is the option to use real bitmaps.
One what?
Why does that matter? If the TASing support is in the game itself, it doesn't matter if the game runs at 100 FPS in one computer and at 1 FPS in another.
Flash actually performs pretty well for projects like this and has some pretty good tools available as well. Flash Builder isn't great for developing, but debugging works nicely with it.
Only real problem is ActionScript which is pretty annoying to develop if you know Java-like languages as it has some pretty annoying features.
"Kids! Bringing about Armageddon can be dangerous. Do not attempt it in your home."
( Pratchett & Gaiman: Good Omens )
We have time to argue about this more, so please do tell what you don't like. If you ask me, the main issue isn't the features that it has, but it's lack of containers. But that is a rather small issue honestly.
Most glaring "feature" is method-based scoping instead of block based scoping. Lack of enums (though can be circumvented) and generics is next. There are other more or less annoying small details that you have to do or know that relate to AS and Flex. I develop with Flex so I don't know how those translate to pure AS-world. UI testing with Flash is also not in a very mature state.
Generics are probably coming (as Vector appeared with Flash Player 10).
For a game Flash is probably a very good choice, especially if you omit some parts of a more rigorous software process.
"Kids! Bringing about Armageddon can be dangerous. Do not attempt it in your home."
( Pratchett & Gaiman: Good Omens )
Yeah, it is not news to me that some people prefer block based scoping. Honestly, it is a rather petty thing if you ask me. If you need block based scoping, it might be a good idea to write a new function instead. As for the enums, it's not the most needed thing, but yeah, it would have be nice with proper enums.
I am not sure what you mean by "UI testing". If you are referring to automated testing tools, Flash should be able to work with those, since it supports the normal windows accessibility system.
Just use XNA. It'll hold your hand all the way though, and given it's cross-platform design there's bound to be good emulation support for it in the future.
I'm starting at a game development program at college next September. I just finished up a BA but don't really know anything about programming (Besides RPGMaker 2003... Ha). Most of my game dev experience is in art and design. Anyway, I do wonder about what kind of features might make a prospective game interesting as a TAS.
In AS3, Flash calculations are actually reasonably fast. Bad performance is almost always due to rendering - everything is anti-aliased and vector-rendered without GPU support. This appears to be changing with the introduction of GPU acceleration for Flash video.
I would say that the ideal development platform would depend on the kind of game you want to make. Flash is a bad choice for a SNES-style sprite based platform game - maybe python and some libraries would be a good idea here? For a 3D game I would definitely suggest unity3D.
There is the obvious advantage that Flash can be embedded in web pages so the TASes can be watched online, without a hefty video download. Same situation with unity3D, provided the user has a small plugin.
I have seen a lot of community-led games die though. They need an able, enthusiastic leader.
edit: I also have some ideas about what features should be in a game designed for TASing!
super synch-robustness - it would be nice to be able to stitch large portions of runs together, and hopefully not have to deal with lag-frames, loading times or luck-based events (in fact, a new random function would have to be specially written to ensure determinism)
lots of little tricks - TASes are great because of abuse of all the little features the designers put in.
open world/non-linear - route planning and sequence breaking are interesting
everything skippable - I'm tired of watching dialogue or seeing the super metroid opening cutscene for the millionth time
edit again: and also a small state space so a full log of states can be stored along with the input file to allow for proper rewinding, even with a video style seeker!
The worst thing to do is design a game that does nothing beyond the things we've already seen. We're accustomed to limited AI complexity idiotic and helpless AI because good AI is either not feasible or not cost-effective. These are the kinds of limitations we don't have to design around.
We should definitely try to invent some new gameplay mechanics— ones that make sense in the context of a TAS. Melding two disparate genres into one game, for instance, could be interesting.
Look at the demo in the "Hatsworth" thread in the DS Games subforum. It's a platformer in one screen, and Panel de Pon in the other. Taking that further, how about a platformer where the level is constructed during play, by falling tetris pieces controlled by the player?
Again, the purpose wouldn't be to subject the player to randomness that we already know they could just manipulate away. Rather, the point would be in allowing them to create things and solve problems using a novel and intricate system, hopefully so that the result is as interesting to watch as it is to produce.
Definitely. A genre I think is unexplored and suited for TASing is physics-based games. World of Goo is a good example. Why not combine physically-simulated construction with a platformer?
But I'm not sure about the importance of AI. I think a TAS will find ways to make even the best AIs look stupid. Focus on enemies with interesting features, rather than smart ones, I think.
But I'm not sure about the importance of AI. I think a TAS will find ways to make even the best AIs look stupid. Focus on enemies with interesting features, rather than smart ones, I think.
I think you're right about that. I meant to speak broadly about how we might take advantage of how processing power has scaled since the days of our currently TAS-able systems.
I remember seeing a game review show on TV in the 90s, where a Nintendo dev was bragging in an interview about being able to render some then-large number of bats in Majora's Mask. To do the same thing now would be trivial, but games don't seem to take advantage of it in any meaningful way. At least, none that I've seen.
River City Ransom allowed only two enemies at once, and there would be lag. It only got worse with weapons and a second player, which is ironic considering that the best thing about that game was how frenetic the action was. So, how much stuff can we have happen on screen now, I wonder? Four players? Ten enemies? It would be nuts!
River City Ransom allowed only two enemies at once, and there would be lag. It only got worse with weapons and a second player, which is ironic considering that the best thing about that game was how frenetic the action was. So, how much stuff can we have happen on screen now, I wonder? Four players? Ten enemies? It would be nuts!
I've been waiting for such a game since high school...
Flash would be suitable even for SNES-like tile-based games (after all there's Flixel, although you might want to deliberately add some abusable physics features).
Dromiceius wrote:
Taking that further, how about a platformer where the level is constructed during play, by falling tetris pieces controlled by the player?
There's the Flash game called Tuper Tario Tros that's just about that. It's not very fun though.
Unfortunately, creating fun TAS-related gameplay is the most difficult task among any other. I tried it and kinda failed (well, few guys completed all the puzzles and learned basic stuff like frame advance and luck manipulation, but they didn't acquire any motivation for practical TASing). Because TASing is hard. Speaking relatively, it would be much easier for a casual gamer to become hardcore gamer than for any hardcore gamer to become TASer.