|
| Nuthen wrote:
| Great article, thank you for sharing this experience. The part I
| found most interesting is the section about the aspect ratio and
| interpolating between the 16:9 and 16:10 views relative to the
| original, although I'm having some trouble fully understanding
| the implementation. Why is the game interpolating between them
| based on the games aspect ratio?
| rogual wrote:
| I can't know ahead of time the exact aspect ratio the player
| will run the game at. 16:9 and 16:10 are the most common on
| today's monitors, but the game might be running in a window, or
| fullscreen on an unusual monitor.
|
| If I just made the game at a fixed 16:9 ratio, it'd leave empty
| space at the edges of any window that isn't exactly 16:9. Same
| if I chose 16:10 or any fixed aspect ratio.
|
| By supporting a range of ratios between 16:9 and 16:10, I
| maximize the number of window sizes that the game will display
| nicely in without any empty space (black bars) at the sides.
|
| The best way, I thought, to support a range of aspect ratios
| was to define two rectangles in the scene, having the minimum
| and maximum ratios supported, and interpolate the camera
| rectangle between them.
|
| Hope that makes sense!
| RulerOf wrote:
| I really appreciated the visualization you provided for that.
| superkuh wrote:
| I still use Flash too. I even have the old flash brower plugin
| that use /tmp for storying flash*... files. I just don't have it
| set to auto-play. It's always click to play.
|
| Additionally I use a flash created "alarm clock" from the early
| 2000s almost every day for various tasks.
| moolcool wrote:
| Flash is fantastic and I wish it got the respect it deserves from
| tech circles. It got an entire generation into animation and
| software engineering, and had really robust and approachable
| tooling which is yet to be replicated. I think back to the gaming
| experiences made in Flash and Shockwave as far back as the mid
| 90s, and nothing today even comes close. Back then, you could
| load up a webpage on a Pentium II and play a really robust game
| made by a teenager in their spare time, and that game will be
| stable and display extremely good performance. Compare that with
| the complexity and barriers that come with mobile game
| development today, or the jank and poor performance of JS based
| games.
|
| TL;DR: It's been decades and there's still no suitable
| replacement for Flash, and the web is poorer for it.
| BulgarianIdiot wrote:
| Flash was conceptually fantastic, and today we can do
| everything Flash did, and more, with HTML, and WebGL.
| Unfortunately we don't have the authoring tool to do so. Flash
| IDE became Adobe Animate, but it has relatively restricted
| output and capabilities, compared to Flash before.
|
| Unfortunately also Flash was full of bugs, FULL. I mean the
| player, the IDE, everything. And Macromedia and consequently
| Adobe were increasingly desperate in monetizing the player by
| attaching downloads to it, like Adobe Reader or anti-virus
| software. Or adding nonsense features like half-baked 3D gaming
| to it.
| mFixman wrote:
| > today we can do everything Flash did, and more, with HTML,
| and WebGL.
|
| There's one big piece missing: we don't have an
| animation/gaming interface that's as easy and intuitive as
| Flash.
|
| Flash didn't become ubiquitous because it was powerful, but
| because it was easy for any 13 year old to pick up and do
| something nice in a couple of days without reading any
| documentation or doing any course. Good luck getting anything
| to work in WebGL without any web programming experience.
| robertoandred wrote:
| The Flash editor is still around, it's just called Adobe
| Animate now. It can export to web for you.
| rchaud wrote:
| Developers love saying "But you can do everything that was
| in Flash directly in Javascript today!!"
|
| I wish they could understand that what they're saying would
| be equivalent to switching out Excel for a Python IDE and
| saying "but you can do calculations here too!"
| dusted wrote:
| _slowly lowers flamethrower_ indeed, you 're right, HTML and
| WebGL with JavaScript or webasm can do anything flash can..
|
| They can't do it in the cycle-count that flash could (I
| remember seeing 3D vector demos running in 640x480 pixels on
| my 133 mhz pentium), but they will do it, and probably look
| almost identical across two different versions of the same
| brand of browser..
|
| But the real point is the authoring tools, and there simply
| aren't any.. We're stuck in the early 80s with a f*cking
| text-editor for GUI work..
|
| Geez, there were authoring tools for making nice GUI
| applications in the Windows 3.11 era.. But modern web
| development has yet to reach that level of maturity.
| moolcool wrote:
| This is admittedly a few years ago, and the scene has
| evolved _a bit_ since then, but I remember seeing really
| simple JS games (think tetris, or a very simple
| sidescroller) being heartily applauded on sites like reddit
| and HN. We're unironically cheering approaching parity with
| a toolset from almost 20 years ago! Things could be so much
| better.
| BeFlatXIII wrote:
| > Tetris or a very simple side scroller
|
| Back when it was still Dynamic HTML and I was in middle
| school, I copied the page source to put those into my
| homepage. I even figured out how to edit levels in the
| Mario clone.
| dncornholio wrote:
| > and today we can do everything Flash did, and more, with
| HTML, and WebGL
|
| This is a myth, theoretical true, but practically impossible.
| Flash was so much more than a browser plugin. With HTML5 it
| is so much harder to maintain a framerate, while in Flash you
| almost didn't need to care about that.
| whywhywhywhy wrote:
| Adobe never cared about Flash beyond it being the webs video
| player.
|
| Honestly the whole thing just began to rot from a tool
| perspective since their purchase.
|
| Their management is too PDF-brained to think of investing in
| quality work in their tools as insane as it sounds they seem
| to consider their creative tools an afterthought and B2B PDF
| solutions their main business. I can't find any other way to
| explain their actions.
| moolcool wrote:
| I don't deny that it had lots of issues. In addition to what
| you mentioned, it was an accessibility nightmare, and had
| tons of security problems. All that said, it's difficult to
| argue with results.
| warent wrote:
| No way! This is the creator of Hapland... As a kid playing flash
| games on websites all day like Addicting Games, Armor Games, etc.
| you don't really think much about the people behind these
| projects. Then time goes on and they cement themselves in your
| mind as a myth.
|
| The fact that I now get to read and understand articles by this
| legend, and work in the same industry vertical him... what a
| privilege!
|
| Thanks for your work. Hugely inspirational to my career.
| coldtea wrote:
| It's nothing to be ashamed o..., wait, Flash you said? Well, then
| it is...
| shzhdbi09gv8ioi wrote:
| I'd imagine lightspark would be useful here, rather than yet
| again reinvent a wheel.
|
| https://lightspark.github.io/
| ho_schi wrote:
| Interesting read. And it doesn't end up with Electron, which is
| "Flash for the Desktop".
|
| _Notarization_
|
| Why I don't wonder? I come from Linux and the weird rules for App
| Bundles and Notarization on Mac are pain. And badly documented.
| And the tools suck! Which entitlements my app needs? How to
| change libraries paths? Compiling applications on Mac is easy
| (with Hombrew), shipping to ordinary users as App Bundles is
| complex and difficult. If you're not a MacOS-Developer using
| XCode?
| mike_hearn wrote:
| If you want to create Mac apps from other platforms then check
| out Conveyor:
|
| https://hydraulic.software/
|
| It can build, sign and notarize Mac apps (and Windows apps, and
| Linux apps) with auto update and can do so from any platform.
| So you can ship to everyone from Linux if you want. It also
| does auto update, generates a download page that detects your
| OS and it includes control over low level OS-specific things
| like setting entitlements, custom deb dependencies, Windows
| manifest extensions etc.
|
| Notarization as a process is actually OK in my view. Yes it
| sucks to have to pay, especially for hobbyist stuff. Still,
| process-wise it's pretty lightweight and it seriously beats
| having a virus scanner intercept and rummage through all your
| file IO all the time. Windows has a lot of problems with
| aggressive AV engines mucking up programs and macOS doesn't,
| because notarization is in effect an ahead of time virus
| scanner that moves the work off the end user laptop. Also these
| days the notarization protocol is open and documented.
| Caitlynmeeks wrote:
| Man I miss Flash too!
|
| Tumult Hype is the closest thing to it, but the editor's Mac
| only.
|
| https://tumult.com/hype/
| bashmelek wrote:
| Great timing for this article! I just used Flash CS5 this week to
| make my first animation. I'll admit that I'm rough with it (made
| a few games with it many years ago, but that is all, stuck with
| Actionscript and static images). Some of the logic hasn't stuck
| with me yet, namely with the timeline and movieclips, and I get
| frustrated. That said, I'm having a great time with it.
| TylerGlaiel wrote:
| Flash is great and tons of devs still use flash. I also use flash
| in my custom game engine (the one powering The End is Nigh and
| the upcoming Mewgenics), a different approach to what the dev in
| this article did (seeing as these are new games and not ports of
| existing flash games), my approach is to load SWF files as the
| resource files for art and animation in my game, and render them
| as vector. Flash puts a lot of information in those files, and I
| parse just enough actionscript bytecode that I hook and trigger
| C++ functions from my actionscript parser. This lets us use flash
| almost exactly the way we used it for making flash games back in
| the mid 2000s, with all of the interesting workflow tricks and
| hacks that made it so nice, while being able to write all the
| actual gameplay code in a real language and render it with openGL
| so its actually fast.
| LoveMortuus wrote:
| Anyone knows of a modern browser that still supports flash? I'm
| stuck having to use old browsers, which I'm not very happy about.
| Ruffle doesn't work the for game that I play (Crystal Saga).
| 4RealFreedom wrote:
| I use flash occasionally to run some older code. I've been
| running this setup for a few years now on my Intel Mac because
| it won't work with Apple's new M chips. There are a couple of
| things you will need. First, download Firefox 84.0 here:
| https://ftp.mozilla.org/pub/firefox/releases/84.0/mac/en-US/.
| Next, you need the Flash Player itself. Adobe, as far as I
| know, removed the links to download it and I don't have
| anywhere I would trust to download. After you have the Flash
| Player, install Firefox 84 and disable the auto-updates. Now
| install Flash and everything should work. Good luck!
| iKnowKungFoo wrote:
| Flash was shuttered due to being a constant, huge security
| risk. So no modern browsers support it and there aren't any
| plugins for it other than Ruffle.
| AndriyKunitsyn wrote:
| Web itself is a constant huge security risk - Playstations 3,
| 4 and 5 were all hacked through Webkit, for example. The
| reason to kill off Flash was just because Apple wanted it
| gone, and Adobe didn't want to make them angry.
| makach wrote:
| Wow! Talk about a love letter at the end of 2022! The dev has
| identified a gap and applies time and effort to solve it through
| building it.
|
| Halfway, the dev complains about the orignal devs using XML,
| because it is not efficient "Hey, I'm not complaining, it makes
| my job easier."
|
| Well sounds like the original developers of Flash made a good
| decision. If it makes it easier to parse the content at a later
| stage, I'm willing to call it a win!
| chubot wrote:
| Yup, this is classic Unix style! Having data-centric
| interoperability among tools also helps you port to new
| platforms more smoothly, as opposed to throwing away your code
| or rewriting from scratch.
|
| Examples:
|
| 1. Using text formats embedded in XML -- he took advantage of
| this when reverse engineering
|
| 2. Generating text ASM -- he said this aids debuggability, and
| allows using existing ASM tools that he didn't have to write
|
| 3. Generating C++ -- taking advantage of the type system, as
| mentioned, and a huge array of other tools (profilers and
| debuggers)
|
| It's data-centric rather than code-centric. It's a
| interoperable and transparent architecture, not a monolithic
| one. (Which is not surprising because Flash itself was made for
| the web.)
|
| Related: _The Internet Was Designed with a Narrow Waist_
| https://www.oilshell.org/blog/2022/02/diagrams.html
|
| _A Sketch of the Biggest Idea in Software Architecture_
| https://www.oilshell.org/blog/2022/03/backlog-arch.html
| anonymous344 wrote:
| how about swishmax? it still works in win xp and can make exe.
| still use that old exe as one app i created is still useful
| rogual wrote:
| Hey HN, I haven't done a lot of technical postmortem blogpost-
| style writing so I'd welcome any feedback or tips on how to
| improve. Is it too long, too short, too technical, not technical
| enough? Boring? Interesting? Is it enlightening or does it just
| come off like content marketing? I literally have no idea how
| good I am at this.
| Jasper_ wrote:
| Worth noting that there is a spec for the custom XML file, it's
| known as FXG. S starts a cubic Bezier curve in absolute
| coordinates:
| https://web.archive.org/web/20110611002637/http://opensource...
| darkwater wrote:
| I think you nailed it at every layer, it was a very
| entertaining, nostalgic and instructive read. Thank you!
| namuol wrote:
| It was perfect! Full of low-key wisdom and fun observations.
| Doesn't feel like "content marketing" in the slightest.
|
| I wish the Hapland series was coming to Mac, but I respect your
| decision to snub Apple.
| lsferreira42 wrote:
| You are very good at this, i'll follow your site from now on
| hoping for more publications like that!
| kulor wrote:
| There's a gem of a hidden narrative here for more junior
| developers that you don't always need to start over (which 9/10
| fails) but instead be resourceful within your constraints and
| to be mindful of what your constraints actually are, which
| don't have to be new and shiny.
| thor_molecules wrote:
| Very interesting, and frankly inspiring to see you get this
| creative.
| HanClinto wrote:
| I really enjoyed it! It didn't come off as content marketing at
| all. Well done!!
| replwoacause wrote:
| I thought it was great, and I have no interest in games or game
| development, but I read the whole thing top to bottom and came
| away thoroughly impressed. Excellent post and work!
| bjackman wrote:
| It was great, loved the concise writing style, and it was a
| cool story.
| rogual wrote:
| Thanks! It's actually great to hear you describe it as
| concise, I was worried it was a bit waffly to be honest.
| mastersummoner wrote:
| It was long because there were a lot of steps to describe.
| But for each, the writing was concise, interesting and
| entertaining.
| jonathanyc wrote:
| Great post! No complaints at all from me. The mix of your
| thought process + screenshots + examples is perfect.
| wila wrote:
| Keep on writing! I enjoyed reading what you tried and why you
| ended up with what you did. It is fine to mention your game, I
| do not consider that content marketing at all.
| sh4rks wrote:
| This was a great read. I distinctly remember playing Hapland as
| a kid. Armour games or Crazymonkeygames, can't remember which
| one it was. So this was a great nostalgia trip.
| civilized wrote:
| I don't think anyone here is going to complain about a post
| where you make a game work by reverse engineering Bezier
| splines encoded in XML by Adobe Flash.
|
| If that's not "Hacker" News, what is?
| bambax wrote:
| Indeed! ;-)
|
| However I wonder why the OP didn't try to keep vector
| graphics and use to SVG for instance? That would allow for
| infinite scalability. It is mentioned that "GPUs don't like
| vectors" but if the game doesn't change too often it should
| not make a lot of difference?
| kmeisthax wrote:
| So, I think I need to elaborate on "GPUs don't like
| vectors". What the OP meant was "GPUs have literally no
| support for rendering anything other than pixels on
| triangles and getting them to efficiently draw Bezier
| curves and fills is an active area of research". You'd need
| specific hardware support for rasterizing them, and as far
| as I'm aware no such hardware exists.
|
| When Adobe hacked on "HTML5 support" to Animate, they did
| exactly the same thing the OP did. It renders every shape
| in the FLA to a sprite sheet and then draws it to a canvas
| tag. If you have knowledge over what will be drawn ahead of
| time, this is the most reasonable thing you can do.
|
| Even before HTML5 support, the AS3 Starling framework that
| let you "use the GPU" would pre-render all your vector
| assets to bitmap textures at runtime. And that was a
| framework built for Flex developers; if you were accustomed
| to building things on the timeline, you rendered on CPU,
| because that's where all of Flash's _very particular_
| rendering logic has to live.
|
| Ruffle gets around this by tesselating every shape into a
| GPU-friendly triangle mesh. This lets us render stuff
| that's technically vectors on GPU. But as you can imagine,
| this creates its own problems:
|
| - Flash has _very specific_ stroke-scaling rules. If a
| stroke is smaller than 1px[0], it will be rounded up to
| 1px. This is how Flash 's "hairline stroke" feature works:
| it actually asks for a 1/20px[1] stroke, and that gets
| rounded up to whatever the current scaling factor for that
| shape is. When your stroke is a polygon mesh, you can't
| vary the stroke to match Flash without retesselating, so
| hairline strokes on shapes that stretch don't animate
| correctly.
|
| - Likewise, any stretch of a stroke that changes the aspect
| ratio also distorts the stroke, since its baked into the
| tesselated mesh. There's a minigolf game that does this to
| hairlines and it will basically never look right in Ruffle.
|
| - Tesselated vectors lose their smoothness, so we have to
| sort of guess what scale the art is drawn at and add enough
| detail polygons for things to render correctly. Most of the
| time we get it right. However, there are some movies that
| do crazy things like store all the art at microscopic scale
| and blow it up. This provides a compression benefit,
| because it quantizes the points on the art with little
| visual difference on Flash Player. On Ruffle, however, the
| art becomes very low-poly.
|
| - All the tesselation work takes a significant amount of
| time. There are certain movies (notably, a lot of
| _Homestuck_ ) that would hang the browser because of how
| much ridiculously complicated vector art was being
| processed before the movie even loads. We had to actually
| limit how much art could tesselate per frame, and expose
| that to movies as bytesLoaded, which is why Ruffle movies
| have preloaders even though we don't support streaming
| download.
|
| There's another approach to drawing Beziers on GPU: drawing
| the hull of control points with a procedural texture that
| calculates the underlying polynomial. This is especially
| simple for quadratic curves (the ones with one control
| point), which is what all Flash timeline art[2] is.
|
| However, strokes are more complicated. You'd think we could
| just take the hull of the stroke and draw that as a fill,
| but you can't. This is because the offset of a Bezier curve
| _is not a Bezier curve_. Drawing the stroke in a pixel
| shader would make sense, except you still need to define a
| polygon mesh around your stroke with a reasonable texture
| coordinate system to make the math work. And the polygonal
| outlines of Bezier curves can get really funky; there 's no
| obvious way to quickly say "here's a curve, now give me the
| polygon that encloses a 5px stroke around it". Remember how
| tesselation takes so long that it would hang Ruffle?
|
| [0] I'm not sure if this is virtual or device pixels.
|
| [1] Flash specifies vectors in fixed-point units called
| twips. That's why the zoom factor on Flash movies was
| locked to 2000%.
|
| [2] Flash can draw cubics - the two-control-point curves
| you think of when you think Bezier - but only in response
| to an AS3 graphics command. We haven't implemented this in
| Ruffle yet.
| Asooka wrote:
| Have you tried splitting the area covered by each shape
| into several 8x8 pixel rectangles, then running a compute
| shader over each one that executes the exact same
| rasterisation algorithm as Flash did? That's more or less
| how triangles are rasterised on the GPU anyway.
|
| It's definitely not a simple solution, but might enable
| you to do runtime rasterisation with a good framerate on
| the GPU rather than pre-rasterising all the vector art.
| detritus wrote:
| > "GPUs have literally no support for rendering anything
| other than pixels on triangles and getting them to
| efficiently draw Bezier curves and fills is an active
| area of research"
|
| Well fuck me, I had no idea. I figured that 'simple 2D
| vectors' would be beyond piss-easy for modern GPUs. I'd
| never considered that it wasn't the actual math space
| that was accelerated, rather the fast memory mapping of
| everything on presumably comparatively simple geometries.
| You've just turned my view of the world upside down :(
| ChuckMcM wrote:
| Yeah, this is something that many many people assume
| (vectors are "easy" on GPUs) and then are amazed (like I
| was!) that they aren't even in the function set. My
| thought was that if you were "accelerating" desktops
| you'd really want vectors right? But no.
| jcelerier wrote:
| > they aren't even in the function set.
|
| they are, but on nvidia only...
| https://developer.nvidia.com/gpu-accelerated-path-
| rendering
| karteum wrote:
| I though that there were some "GPU accelerated path
| rendering" already 10 years ago ?
| https://developer.nvidia.com/nv-path-rendering
| https://developer.nvidia.com/gpu-accelerated-path-
| rendering
|
| (OK those links are for NVidia, but if they can do it I
| guess others can too ?) (also see
| https://www.researchgate.net/publication/262357352_GPU-
| accel... )
| karteum wrote:
| Also, as far as I understood, both GNU Gnash and
| Lightspark were using OpenGL for rendering. So I always
| expected that GPU would still bring some sort of
| acceleration for 2D path rendering ?
| Nihilartikel wrote:
| Riffing off of other recent HN posts, I'm wondering if
| signed distance fields might be a contender for 2d
| strokes.
|
| I've seen some font rendering work that has already
| embraced them for high perf rasterization.
|
| Still, may be hard to get flash equivalency.
| bambax wrote:
| Thanks for this! Very informative!
| [deleted]
| rogual wrote:
| I did consider it. Infinite scalability isn't required
| during runtime; the scene doesn't ever zoom or scale in the
| games, because that was always so slow in Flash, so the
| only real benefits would be 1) supporting higher
| resolutions and 2) reducing file size.
|
| For 1) I decided I'd rather just release an update with
| larger textures if these ones ever start to look dated.
| That way I get to keep the runtime code simple. Less code
| means fewer bugs. I don't want to spend a lot of time
| fielding support requests from users who hit edge cases in
| the rasterizer. As for not changing too often, that's true,
| but taking advantage of that means doing change tracking
| with dirty-rectangles or similar, which not only adds
| complexity but also feels like it would make performance
| less predictable.
|
| And for 2) the game as it stands now is under 50MB so I
| didn't feel a pressing need to make it smaller, although a
| tiny executable would be cool in a satisfying, demoscene
| kind of way.
| bambax wrote:
| Ah, thanks. That could maybe go into the article as well?
| Although it's already pretty thorough as it is.
| dontwearitout wrote:
| Flash was my 2nd programming language (after VB6) back when it
| was still Macromedia. I had a lot of fun making really crappy
| minigames and learning the basics of coding. This article
| brought some good nostalgia and plenty of astonishment at the
| lengths you went to.
|
| Your writing itself is great. A lot of writing linked by HN
| seems too verbose because people try to sound smart. Yours is
| succinct while engaging. Right length, just technical enough,
| and interesting. I really enjoyed this, thanks for writing it!
|
| Also:
|
| > Object-orientation is not fashionable right now in gamedev
| circles
|
| Can you elaborate on this?
| japhib wrote:
| Object-orientation is kind of the old-school way of doing
| things, these days it's all about ECS - entity component
| system. This is a more data-oriented approach that has the
| potential for much higher performance when you have thousands
| of objects that need updating in your game. It's similar to
| how OO languages like Java/C# are going out of style and more
| (nominally, at least) data-oriented languages such as Go or
| Rust are in style.
| BlueTemplar wrote:
| Probably how OO teachers and mentors failed horribly (AFAIK
| we _still_ don 't warn new students about the pitfalls of
| inheritance ?), so ECS got popular as a better alternative to
| shitty OOP code ?
|
| https://www.gamedev.net/blogs/entry/2265481-oop-is-dead-
| long...
| stelonix wrote:
| Not only that, but due to CPU caches and memory alignment
| issues, ECS have better performance than inheritance; also
| because most ECS systems ditch virtual function calls.
| cogman10 wrote:
| > ECS have better performance than inheritance
|
| Can have.
|
| Whether or not an ECS will actually be faster depends
| entirely on the type of game and access patterns of the
| inheritance structure. Further, it matters how you are
| doing inheritance (LTO can eliminate a lot of the
| pitfalls even if you use virtual function calls).
|
| This is nothing against ECS. I just find the current
| claims of performance dubious and potentially flat out
| wrong given modern compiler optimizations and changes in
| CPU caches (mainly that they got a LOT bigger).
| robertlagrant wrote:
| Just to say: thank you for these games. I loved them when I was
| in my 20s.
| log101 wrote:
| It was a pretty insightful article, I didn't know how a flash
| game worked internally and how it could be reimplemented! I
| think it is also relevant for those migrating their projects to
| newer technologies, I always found this process fun(except
| there is a deadline) :)
|
| (Edit: I love your games and used to play a lot when I was a
| kid)
| unsafecast wrote:
| I liked it a lot! It doesn't feel like marketing at all, and I
| think it's a good balance between technical and non-technical
| (though I wouldn't mind more details).
|
| Keep writing!
| JoeyJoJoJr wrote:
| Great article! I also still use Flash by using a custom runtime
| that interprets the output of the "Export as texture atlas"
| feature. I was wondering if you had attempted to use this
| feature in order the rasterize the graphics?
|
| https://github.com/jackwlee01/animate_cc_runtime
| pie_flavor wrote:
| This is pretty great writing, I'd love to read more of it.
| Tepix wrote:
| It's interesting for sure, I'm left wondering if it was less
| work to make flash continue to work somehow instead of re-
| authoring the original games.
|
| I mean you've probably learned a lot, but you could have
| learned to author games using a more modern tool than flash
| instead and that would have been useful in the future, right?
| vfclists wrote:
| You know the IT media is full of hacks when they all studiously
| ignore the fact that the reason Flash was ultimately abandoned is
| that it would allow app developers to bypass the appstores of
| Apple and Google.
|
| The two will never create anything to match Flash.
|
| Even Microsoft abandoned Silverlight for the same reason and it
| is why Mozilla abandoned Shumway because they don't want to bite
| Google's hand.
| Faruk66 wrote:
| Tuhin46 wrote:
| yamtaddle wrote:
| > GPUs don't really like drawing vector graphics. They like big
| batches of textured triangles. So, I needed to rasterize these
| vectors.
|
| I remember in the distant past of like 15 years ago when it was
| still common wisdom to avoid vector images on web pages, or
| drawing _anything_ using fancy CSS features, because the resource
| cost to the client was too high and it 'd hurt performance.
|
| I think proliferation of runtime-rendered vector-icons/CSS-
| drawing/CSS-animation is under-appreciated when it comes to
| finding things to blame for why the web performs like dogshit,
| even on super computers. Sure it's probably mostly Javascript's
| fault, but I think those very likely play a non-negligible role.
| gibspaulding wrote:
| I was expecting "Attempt 3" to involve Bluemaxima's Flashpoint,
| and was surprised not to see it mentioned. Does anyone know why
| that wouldn't have been an option, or is this essentially what
| Attempt 1 would have involved?
|
| For anyone not familiar with Flashpoint, it's a project to
| preserve old flash games and animations and keep them playable on
| modern platforms. It's open source and includes a huge library
| (including it looks like Hapland 1-3).
|
| https://bluemaxima.org/flashpoint/
|
| Edit: Reading a bit further down the article, it looks like they
| were able to make some big improvements by building their own
| engine like supporting wide screen and higher FPS so that sort of
| answers my question!
| TylerGlaiel wrote:
| flashpoint is not a flash emulator, its a preservation effort
| that has archived tons of flash content from the web
|
| Ruffle is the flash emulator https://ruffle.rs/
| EamonnMR wrote:
| It's like Steam for Flash, Shockwave, and Java Applet games. I
| highly recommend it. Though I do wonder if it's going to
| survive the transition away from x86...
| oneepic wrote:
| I still play games on Flashpoint. Hell, I speedrun and showcase
| games in Flashpoint during some regular events with my other
| friends playing ""real"" games. It's not the best UI, but you
| do have an easy search function to find content you might like.
|
| Gotta be careful to avoid the porn games though. Flashpoint
| archived some.
| usui wrote:
| > The way forward was obvious; I'd have to make my own Flash
| player.
|
| Uhhhhhhh, hold on a second, wait a second... this is not readily
| apparent nor obvious as a course of action at all!!
|
| I would rather have gathered the raw assets and tried recoding
| the game using the same game logic on a better platform...
| jmull wrote:
| I think that's essentially what the author did?
| tinco wrote:
| Would it have been less work? I wouldn't be so sure, given that
| the author was actually successful.
| the-alchemist wrote:
| The frustrating thing for me personally is that we--as an
| industry--just keep rewriting/porting the same pieces of software
| from one API to another.
|
| Here is was Flash -> Steam SDK. In another HN article, it was
| PlantUML (Java) to D3 (Javascript).
|
| Didn't they re-write Minecraft to something else (Bedrock
| Edition)?
| Alifatisk wrote:
| Yes, they did re-write to Minecraft Bedrock Edition but did not
| deprecate java edition, it's still alive an thriving.
| not2b wrote:
| From the article: "GPUs don't really like drawing vector
| graphics. They like big batches of textured triangles. So, I
| needed to rasterize these vectors."
|
| The author certainly wasn't the first person to have this
| problem. What is available for fast display of vector graphics
| animations with GPU acceleration? Anything better or higher level
| than just doing huge numbers of calls to
| OpenGL/Vulcan/Metal/etc.?
| andai wrote:
| You mention that while using Flash you found it missing basic
| features, could you give some examples?
|
| One of my long-term projects is to build a Flash clone (Flash-
| the-authoring-tool). So I'd love to hear from people who are
| still using Flash, to see what features / pain points are most
| important.
| rogual wrote:
| Sure!
|
| * You can't set keyboard shortcuts for some common actions like
| changing the brush mode between "paint behind", "paint inside",
| etc. You have to click the button every time.
|
| * No way to import or export any standard vector graphics
| formats.
|
| * No easy way to just add custom properties to objects on the
| stage.
|
| * No outliner. Unless you put exactly one object on each layer,
| it's very hard to find and select objects on the stage that
| aren't large and obvious. Invisible objects? Nightmare!
|
| * You can name frames, but there's no menu to quickly select
| one to jump to. In a 500+ frame timeline, you've just gotta
| manually scroll around to find the frame you're looking for,
| even if you've named it.
|
| * You can't set an alpha component for the grid to make it
| semitransparent.
|
| These are all missing in Flash CS6, the last thing that was
| called "Flash". I don't know if any were added in Adobe Animate
| because I don't like to rent software.
|
| There's definitely room for a Flash authoring replacement.
| Every now again I look at all the programs I can find in the
| space and try them out, but nothing reaches Flash yet, in my
| opinion, despite its limitations. Best of luck with yours!
| eldenlad wrote:
| Have you tried writing any custom plugins/editor panels to
| use in the editor? The process is pretty arcane at first, but
| eventually you are just writing html+javascript and have
| access to a very powerful editor API.
|
| When I was working with Animate a few years ago I wrote a
| plugin to navigate around the timeline to find tagged frames
| and export things.
| FrostKiwi wrote:
| OMG, was a huge fan of the Hapland series during middle school.
| Definetly gonna buy such a lovely crafted remaster.
|
| Also happy to see all the libraries I love to work with pop up
| here and there.
| samiam_iam wrote:
| keewee7 wrote:
| IIRC many 2D animators considered the old Adobe Flash
| Professional to be one of the best 2D animation tools ever made.
| codetrotter wrote:
| Fun fact: An animated TV series that ran from 2010 to 2019
| developed by Lauren Faust, was animated in Adobe Flash.
|
| https://en.wikipedia.org/wiki/My_Little_Pony:_Friendship_Is_...
| thesuitonym wrote:
| Actually, there were quite a few animated TV series that were
| animated in Flash (And later Adobe Animate).
|
| https://en.wikipedia.org/wiki/List_of_Flash_animated_televis.
| ..
| yreg wrote:
| That is indeed quite a few.
| isametry wrote:
| The abundance of obscure and overly specific lists is one
| of my favorite features of Wikipedia. Thanks for linking!
| tetris11 wrote:
| Many Adult Swim shows too: Harvey Birdman and Metalocalypse
| come to mind
| themodelplumber wrote:
| Many 2D illustrators, industrial designers, and graphic
| designers considered it one of the best 2D drawing tools ever
| made.
|
| One of my roommates in the heyday of Flash was an industrial
| designer who was paid by an Italian business to design
| aftermarket wheels for cars, which he did in Flash. Eventually
| he figured out a Flash > Studio Max workflow he liked and
| finished projects in 3D that way.
|
| That guy could draw anything in Flash and preferred it over
| Illustrator, Photoshop, and Fireworks.
| kmeisthax wrote:
| Funnily enough that was actually the original goal of Flash -
| back when it was called SmartSketch. The idea was to have a
| vector drawing tool for pen tablets. But it sold absolutely
| horribly.
|
| Jonathan Gay pivoted it to animation shortly thereafter and
| rebranded it as FutureSplash, and then got bought out by
| Macromedia.
| robertoandred wrote:
| It's still around, it's just called Adobe Animate now. Can
| export to video, to web, etc.
| rburhum wrote:
| I saw the headline and I was ready to talk trash... then I opened
| the blog post and wow. What an incredible job for a single
| person. Hats off on the different approaches you took. Excellent
| work! I loved the post and congrats on launching it on Steam!
| alxlaz wrote:
| > The vintage Flash UI is great. Buttons have edges. Icons look
| like things. Space is well-used. It's amazing! Using old UIs
| makes me feel like an archaeologist discovering some sort of
| forgotten Roman technology. The lost art of UI design. It's neat.
|
| This was one my favourites parts in the article. An the real
| piece of the pie comes right after it: there's a screenshot with
| like thirty icons _and they 're different enough that you can
| tell one from the other_.
| legohead wrote:
| I am _still_ clicking on Gmail on accident because I think it
| 's Maps. The icons are horrible.
| quickthrower2 wrote:
| Classic HTML gmail
| https://support.google.com/mail/answer/15049?hl=en (final
| link on that page)
| indymike wrote:
| > The lost art of UI design.
|
| This sounds like a great title for a really good book.
| isametry wrote:
| I find it somehow intriguing how you already pre-destined
| this imaginary book to be great... That stood out to me for
| some reason. How about a great title for a shitty book?
|
| Funnily enough, _The Lost Art Of UI Design_ sounds like a
| potentially very mediocre book to me. One of those stretched-
| out "self-teaching" design guides that listicles will
| recommend you. It chooses a couple of very specific rules of
| thumb, it gives way too much importance to them, and somehow
| manages to water them down to 250 pages. Probably written
| either by someone who's a skilled writer but barely knows
| enough about the industry, or an experienced specialist in
| the field who unfortunately can't write for life.
| indymike wrote:
| Ah... soon the publishers will just have chatgpt write it.
| ilyt wrote:
| It's like entire industry at one point decide to optimize UIs
| for the first 30 minutes of usage and not the _years of users
| using apps once they get familiar with them_.
|
| "oooh let's not put too many buttons to scare users away",
| "they got 22 inch screens, let's just waste space for no good
| reason, it looks modern and airy"
| dkarl wrote:
| That's the discipline of data-driven business. If 20 people
| use your app and despise it and are depressed by it, that's
| better than 19 people using it and loving it. No
| sentimentality allowed.
| sosborn wrote:
| How could anyone possibly measure that an app is despised
| and depresses people (or vice versa)?
|
| Usage can't be it, because I use a ton of software that I
| despise and get depressed by, but only because I get paid
| to do so, or the app is so niche there isn't a viable
| replacement.
| layer8 wrote:
| They don't. They just measure that the more "modern"
| design gets 5% more users, so clearly it must be better.
| TeMPOraL wrote:
| > _How could anyone possibly measure that an app is
| despised and depresses people (or vice versa)?_
|
| You'd have to actually _talk to your users_. But that
| requires genuine human investment, so it doesn 't scale.
| It doesn't come in the form of a third-party SaaS with a
| pretty dashboard, generous free plan, and integration via
| single |