<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="https://www.w3.org/2005/Atom"><title>The Vault</title><link href="https://fserb.com/vault/" rel="alternate"></link><link href="https://fserb.com/vault/atom.xml" rel="self"></link><id>https://fserb.com/vault/</id><updated>2015-04-19T14:53:00+02:00</updated><entry><title>the name of the game is grab</title><link href="https://fserb.com/vault/post/the-name-of-the-game-is-grab.html" rel="alternate"></link><updated>2015-04-19T14:53:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2015-04-19:vault/post/the-name-of-the-game-is-grab.html</id><summary type="html">&lt;div class="center"&gt;&lt;a href="https://fserb.com/vault/the-name-of-the-game-is-grab.html"&gt;&lt;img style="width:240px;height:240px" src="https://fserb.com/vault/images/ld32.gif"&gt;&lt;br&gt;click to play&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;This is my &lt;a href="https://www.ludumdare.com/compo/"&gt;Ludum Dare 32&lt;/a&gt; entry. The theme was &lt;strong&gt;An Unconventional Weapon&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;For a while, I've been trying to bring some &lt;em&gt;League of Legends&lt;/em&gt; mechanics into smaller games, and Ludum Dare seemed like the ideal opportunity to do so. One of the funniest characters to play in LOL is &lt;a href="https://www.youtube.com/watch?v=Z8rAUJjQUy8"&gt;Blitzcrank&lt;/a&gt;, so I knew the mechanics were solid: hooking things is fun. There's also the counter side of having to stand still while hooking which makes one vulnerable if the hook misses.&lt;/p&gt;
&lt;p&gt;After the core mechanic was chosen, most of the work went on the enemies. Each enemy has a slightly different AI. &lt;em&gt;Pink&lt;/em&gt; rotates its bullet around itself, so it tries to always stay the same distance from you; &lt;em&gt;Yellow&lt;/em&gt; always tries to stay as far from you as possible, shooting from time to time; &lt;em&gt;Purple&lt;/em&gt; throws a bullet in your direction, and moves there to grab it back; &lt;em&gt;Blue&lt;/em&gt; just tries to dodge the hooks and counter-shoots you.&lt;/p&gt;
&lt;p&gt;Another interesting part of the game is how every time you kill a ghost, you stay with the other three ghosts (and the BG changes), as if each set of 3 ghosts is kinda a different game. I think this could be explored further in other games.&lt;/p&gt;
&lt;p&gt;Done using &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt;. &lt;a href="https://github.com/fserb/sketch/blob/master/src/LD32.hx"&gt;Full source code&lt;/a&gt;.&lt;/p&gt;</summary><category term="games"></category></entry><entry><title>Tin Can Internet</title><link href="https://fserb.com/vault/post/tin-can-internet.html" rel="alternate"></link><updated>2014-08-24T20:12:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-08-24:vault/post/tin-can-internet.html</id><summary type="html">&lt;div class="center"&gt;&lt;a href="https://fserb.com/vault/tin-can-internet.html"&gt;&lt;img style="width:240px;height:240px" src="https://fserb.com/vault/images/ld30.gif"&gt;&lt;br&gt;click to play&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;This is my &lt;a href="https://www.ludumdare.com/compo/"&gt;Ludum Dare 30&lt;/a&gt; entry. The theme was &lt;strong&gt;Connected Worlds&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is the first game I made since I moved from Zurich to Montreal. The whole games was made in a day or so. Most of the time I spent cleaning up the old infrastructure and making sure everything worked fine.&lt;/p&gt;
&lt;p&gt;I've spent some time making sure the controllers were working fine and improving the rope mechanic. I think they turned out pretty well and it is super fun to circle around planets.&lt;/p&gt;
&lt;p&gt;The hard part was finding a challenging mechanic after the basic mechanic was in place. I tried a bunch of strategies here (running to the top, infinite size world, etc). I settled with a time-based level mechanic. It isn't the deepest one, but it's pretty ok for a small game.&lt;/p&gt;
&lt;p&gt;Done using &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt;. &lt;a href="https://github.com/fserb/sketch/blob/master/src/LD30.hx"&gt;Full source code&lt;/a&gt;.&lt;/p&gt;</summary><category term="games"></category></entry><entry><title>Orbit</title><link href="https://fserb.com/vault/post/orbit.html" rel="alternate"></link><updated>2014-05-01T18:52:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-05-01:vault/post/orbit.html</id><summary type="html">&lt;div class="center"&gt;&lt;a href="https://fserb.com/vault/orbit.html"&gt;&lt;img style="width:240px;height:240px" src="https://fserb.com/vault/images/orbit.gif"&gt;&lt;br&gt;click to play&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;This game started as a follow up from &lt;a href="https://fserb.com/vault/super-hot-asteroid.html"&gt;&lt;strong&gt;Super Hot Asteroid&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://fserb.com/vault/hypermania.html"&gt;&lt;strong&gt;Hypermania&lt;/strong&gt;&lt;/a&gt;. I was also looking for super simple control schemes.&lt;/p&gt;
&lt;p&gt;After deciding on the control scheme (just switching direction, auto move and auto shooting), it was just a matter of finding an interesting balance. In the end I decided to prioritize trying to destroy as little as possible while surviving the turret attacks.&lt;/p&gt;
&lt;p&gt;Code-wise, it's nice to notice the AI for the turret. It tries to be smart and predict your movement patterns. It became too good, which made me add a shield to the player. The shield, on other hand, made the game a bit longer, which allowed me to add a score very strongly biased towards not destroying things.&lt;/p&gt;
&lt;p&gt;Visually, we kept the minimalistic color/black/white theme, which I think works great.&lt;/p&gt;
&lt;p&gt;Done using &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt;. &lt;a href="https://github.com/fserb/sketch/blob/master/src/Orbit.hx"&gt;Full source code&lt;/a&gt;.&lt;/p&gt;</summary><category term="games"></category></entry><entry><title>You are a metro car</title><link href="https://fserb.com/vault/post/you-are-a-metro-car.html" rel="alternate"></link><updated>2014-04-28T00:02:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-28:vault/post/you-are-a-metro-car.html</id><summary type="html">&lt;div class="center"&gt;&lt;a href="https://fserb.com/vault/you-are-a-metro-car.html"&gt;&lt;img style="width:240px;height:240px" src="https://fserb.com/vault/images/ld29.gif"&gt;&lt;br&gt;click to play&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;This is my &lt;a href="https://www.ludumdare.com/compo/"&gt;Ludum Dare 29&lt;/a&gt; entry. The theme was &lt;strong&gt;Beneath the Surface&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I didn't have too much time for this, so the whole game was fully done (from idea to submission) in close to 10 hours. I don't think this impacted the implementation a lot, but it meant I had to go forward with the first idea that we had. (Which was, in fact, my girlfriend's).&lt;/p&gt;
&lt;p&gt;Interesting implementation point here was using a &lt;a href="https://en.wikipedia.org/wiki/Voronoi_diagram"&gt;Voronoi diagram&lt;/a&gt; to decide which station connects to each other (all rails are, in fact, perpendicular to edges of the Voronoi cells of the station).&lt;/p&gt;
&lt;p&gt;I've spend most of the time trying to get some user input that didn't suck. I experimented with the car automatically running, with break only mode, with different speeds, etc. Ultimately, being able to fully control forward/backwards was the most fulfilling choice.&lt;/p&gt;
&lt;p&gt;I also had implemented some passenger mode, where you could see little passengers on the train and deliver them to each station, but it was just very distracting and not fun. Finally, I also had plans for different types of missions, but then I realized they are all variations of "go to a particular station", so I cut those out too.&lt;/p&gt;
&lt;p&gt;Done using &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt;. &lt;a href="https://github.com/fserb/sketch/blob/master/src/LD29.hx"&gt;Full source code&lt;/a&gt;.&lt;/p&gt;</summary><category term="games"></category></entry><entry><title>HTML5 Audio</title><link href="https://fserb.com/vault/post/html5-audio.html" rel="alternate"></link><updated>2014-04-22T03:15:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-22:vault/post/html5-audio.html</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/fserb/sfxr"&gt;Sfxr&lt;/a&gt; now supports HTML5 audio!&lt;/p&gt;
&lt;p&gt;This means I was able to flip the default games from Flash to &lt;strong&gt;HTML5&lt;/strong&gt;. I.e., unless people press on the "flash" link, all games are by default HTML5!&lt;/p&gt;
&lt;p&gt;I plan to start developing directly on the HTML5 target from now on (instead of using Flash for debugging, as I've been doing). Let's see how that works out.&lt;/p&gt;</summary><category term="vault"></category></entry><entry><title>Gamepads are joysticks</title><link href="https://fserb.com/vault/post/gamepads-are-joysticks.html" rel="alternate"></link><updated>2014-04-22T01:07:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-22:vault/post/gamepads-are-joysticks.html</id><summary type="html">&lt;p&gt;I've added gamepad/joystick support to all Flash and HTML5 games. The Gamepad API is currently only supported on Chrome (and Firefox nightly, I heard). So to use it, you need to use Chrome.&lt;/p&gt;
&lt;p&gt;Also, the buttons are only tested for my Xbox 360 controller (on Mac), so not sure what will happen with different controllers and platforms. Feedback would be nice.&lt;/p&gt;</summary><category term="vault"></category></entry><entry><title>Gather</title><link href="https://fserb.com/vault/post/gather.html" rel="alternate"></link><updated>2014-04-15T23:04:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-15:vault/post/gather.html</id><summary type="html">&lt;div class="center"&gt;&lt;a href="https://fserb.com/vault/gather.html"&gt;&lt;img style="width:240px;height:240px" src="https://fserb.com/vault/images/gather.gif"&gt;&lt;br&gt;click to play&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;In this game, you have to group boxes of different colors. A group disappears when each color in it has the same number of pieces. The game is over if you reach the bottom of the screen.&lt;/p&gt;
&lt;p&gt;This game's idea came to me when I was looking for 8-bit pixel art and it has some inspiration from Aba's &lt;a href="https://abagames.sakura.ne.jp/flash/st/"&gt;sum10&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It still has a minimalistic theme, but different from previous games. I really enjoy the top score bar on this one and I think it really adds a nice effect.&lt;/p&gt;
&lt;p&gt;Done using &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt;. &lt;a href="https://github.com/fserb/sketch/blob/master/src/Gather.hx"&gt;Full source code&lt;/a&gt;.&lt;/p&gt;</summary><category term="games"></category></entry><entry><title>Leaderboards</title><link href="https://fserb.com/vault/post/leaderboards.html" rel="alternate"></link><updated>2014-04-14T01:27:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-14:vault/post/leaderboards.html</id><summary type="html">&lt;p&gt;I've just coded a quick interface to &lt;a href="https://scoreoid.net/"&gt;Scoreoid&lt;/a&gt; and added support for the leaderboard on &lt;a href="https://fserb.com/vault/hypermania.html"&gt;Hypermania&lt;/a&gt; and &lt;a href="https://fserb.com/vault/super-hot-asteroid.html"&gt;Super Hot Asteroid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The scoreboard shows the top 20 users. It's mostly a quick hack that I may regret in the future and will have to embarassly remove. That said, it's there and it's fun.&lt;/p&gt;</summary><category term="vault"></category></entry><entry><title>Hypermania</title><link href="https://fserb.com/vault/post/hypermania.html" rel="alternate"></link><updated>2014-04-13T21:03:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-13:vault/post/hypermania.html</id><summary type="html">&lt;div class="center"&gt;&lt;a href="https://fserb.com/vault/hypermania.html"&gt;&lt;img style="width:240px;height:240px" src="https://fserb.com/vault/images/hypermania.gif"&gt;&lt;br&gt;click to play&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;This is my take on Atari's &lt;strong&gt;Megamania&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It has some of the enemy patterns found on the original game, but the latter levels are somewhat harder. Also, not having lifes makes the game much harder than the original version. I may revisit that. It has also a nice minimalistic theme.&lt;/p&gt;
&lt;p&gt;One interesting part of coding this was trying to find a minimal data structure to support all different enemy patterns. &lt;a href="https://github.com/fserb/sketch/blob/master/src/Hypermania.hx#L212-L222"&gt;In the end&lt;/a&gt; they can all be described by a spawn pattern (for horizontal and vertical waves), functions for x and y movement and frequency of shooting.&lt;/p&gt;
&lt;p&gt;It also contains a &lt;a href="https://github.com/fserb/sketch/blob/master/src/Hypermania.hx#L314-L329"&gt;Space Invaders generator&lt;/a&gt; that has nice results for such a simple idea. It's based on &lt;a href="https://www.levitated.net/daily/levInvaderFractal.html"&gt;Invader.Fractal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During the development, I ended up improving a lot some of &lt;strong&gt;ugl&lt;/strong&gt;: better timers, game delay, input reset, sound caching and nicer particles.&lt;/p&gt;
&lt;p&gt;Done in 20 hours, using &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/fserb/sketch/blob/master/src/Hypermania.hx"&gt;Full source code&lt;/a&gt;.&lt;/p&gt;</summary><category term="games"></category></entry><entry><title>HTML5</title><link href="https://fserb.com/vault/post/html5.html" rel="alternate"></link><updated>2014-04-11T10:45:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-11:vault/post/html5.html</id><summary type="html">&lt;p&gt;After working a bit on &lt;a href="https://github.com/openfl/openfl-html5"&gt;openfl-html5&lt;/a&gt; and making some horrible hacks that were later fixed by &lt;a href="https://www.joshuagranick.com/blog/"&gt;Joshua&lt;/a&gt;, I've managed to release &lt;strong&gt;HTML5&lt;/strong&gt; versions of all ugl games.&lt;/p&gt;
&lt;p&gt;My original plan was to have only those and completely ditch the Flash releases, but &lt;code&gt;openfl-html5&lt;/code&gt; is not that stable yet. So I'm keeping both for now, defaulting to flash. As soon as I get sfxr working on &lt;code&gt;HTML5&lt;/code&gt;, I'll flip the default.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; just fixed a bug that prevent the &lt;code&gt;iframe&lt;/code&gt; from showing on Firefox. Also, added a bunch of optimizations that made the HMTL5 version much faster.&lt;/p&gt;</summary><category term="vault"></category></entry><entry><title>Super Hot Asteroid</title><link href="https://fserb.com/vault/post/super-hot-asteroid.html" rel="alternate"></link><updated>2014-04-05T13:16:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-05:vault/post/super-hot-asteroid.html</id><summary type="html">&lt;div class="center"&gt;&lt;a href="https://fserb.com/vault/super-hot-asteroid.html"&gt;&lt;img style="width:240px;height:240px" src="https://fserb.com/vault/images/asteroid.gif"&gt;&lt;br&gt;click to play&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;One more on the minimalistic theme. This game is a mix of Asteroids (the Atari classic) and the amazing &lt;a href="https://superhotgame.com/"&gt;SUPERHOT&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've added a nice screen shake when something explodes. I've learned this with two talks that are totally worth watching: &lt;a href="https://www.youtube.com/watch?v=AJdEqssNZ-U"&gt;The Art of Screenshake&lt;/a&gt; by &lt;a href="https://vlambeer.com"&gt;Vlambeer&lt;/a&gt;'s &lt;a href="https://twitter.com/jwaaaap"&gt;Jan Willem Nijman&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=Fy0aCDmgnxg"&gt;Juice it or lose it&lt;/a&gt; by &lt;a href="https://grapefrukt.com"&gt;Grapefrukt&lt;/a&gt;'s Martin Jonasson and Petri Purho.&lt;/p&gt;
&lt;p&gt;Also, tunning the mechanic was pretty interesting: how fast can the ships fly, fire rates, bot AI. Overall, it was a lot of fun.&lt;/p&gt;
&lt;p&gt;Done in 1 day, using &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/fserb/sketch/blob/master/src/Asteroid.hx"&gt;Full source code&lt;/a&gt;.&lt;/p&gt;</summary><category term="games"></category></entry><entry><title>Amaze</title><link href="https://fserb.com/vault/post/amaze.html" rel="alternate"></link><updated>2014-04-03T20:45:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-03:vault/post/amaze.html</id><summary type="html">&lt;div class="center"&gt;&lt;a href="https://fserb.com/vault/amaze.html"&gt;&lt;img style="width:240px;height:240px" src="https://fserb.com/vault/images/amaze.gif"&gt;&lt;br&gt;click to play&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;I enjoyed this minimalistic style scheme with full background color and B&amp;amp;W foreground. I will do more of that.&lt;/p&gt;
&lt;p&gt;The maze generation algorithm is different than &lt;a href="en.wikipedia.org/wiki/Maze_generation_algorithm"&gt;usual&lt;/a&gt;. It's a variant of &lt;a href="https://en.wikipedia.org/wiki/Prim%27s_algorithm"&gt;Prim's algorithm&lt;/a&gt; that tries to make the maze a bit circular (so we have longer corridors on the outskirts). This is done by picking a prefered direction of expansion depending on the tile we are expanding.&lt;/p&gt;
&lt;p&gt;The bots walk semi-randomly. They try to get closer to you, but not optimally. If they directly see you, they will run for you.&lt;/p&gt;
&lt;p&gt;Based on &lt;a href="https://twitter.com/rylgh"&gt;Ryleigh Kostash&lt;/a&gt;'s &lt;a href="https://rylgh.com/mazing/"&gt;mazing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Done in 1 day, using &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/fserb/sketch/blob/master/src/Amaze.hx"&gt;Full source code&lt;/a&gt;.&lt;/p&gt;</summary><category term="games"></category></entry><entry><title>Street Musician</title><link href="https://fserb.com/vault/post/street-musician.html" rel="alternate"></link><updated>2014-04-01T23:12:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-01:vault/post/street-musician.html</id><summary type="html">&lt;p&gt;So, I was in Florence this weekend and got woken up by a guy playing violin under my window. Then this.&lt;/p&gt;
&lt;div class="center"&gt;&lt;a href="https://fserb.com/vault/street-musician.html"&gt;&lt;img style="width:240px;height:240px" src="https://fserb.com/vault/images/musician.gif"&gt;&lt;br&gt;click to play&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;First published game using &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt;, my Haxe game prototype library.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/fserb/sketch/blob/master/src/Musician.hx"&gt;Full source code&lt;/a&gt;.&lt;/p&gt;</summary><category term="games"></category></entry><entry><title>vault library</title><link href="https://fserb.com/vault/post/vault-library.html" rel="alternate"></link><updated>2014-04-01T22:48:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-01:vault/post/vault-library.html</id><summary type="html">&lt;p&gt;I've just published on &lt;a href="https://github.com/fserb/vault"&gt;github&lt;/a&gt; a library containing all code I use for game development in Haxe. It's called &lt;a href="https://github.com/fserb/vault"&gt;&lt;strong&gt;vault&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It contains mostly code written by me, with some classes copied or inspired by other people. Credits on particular files and on the main readme.&lt;/p&gt;
&lt;p&gt;It also includes &lt;a href="https://github.com/fserb/vault/tree/master/vault/ugl"&gt;&lt;strong&gt;ugl&lt;/strong&gt;&lt;/a&gt; the &lt;strong&gt;micro game library&lt;/strong&gt; (I call it &lt;em&gt;ugly&lt;/em&gt;), that I use for rapid game prototyping. &lt;strong&gt;Ugl&lt;/strong&gt; was originally based on &lt;a href="https://github.com/abagames/mgl"&gt;mgl&lt;/a&gt;, but things have drifted apart pretty fast plus I have a non-cryptic name convention.&lt;/p&gt;
&lt;p&gt;There is a bunch of code and very little documentation so far. I plan to improve this in the future, but who knows.&lt;/p&gt;
&lt;p&gt;Go check it out.&lt;/p&gt;</summary><category term="vault"></category><category term="dev"></category></entry><entry><title>sfxr</title><link href="https://fserb.com/vault/post/sfxr.html" rel="alternate"></link><updated>2014-04-01T00:00:00+02:00</updated><author><name>fserb</name></author><id>tag:fserb.com,2014-04-01:vault/post/sfxr.html</id><summary type="html">&lt;p&gt;Two days ago I released the first version of my &lt;a href="https://github.com/fserb/sfxr"&gt;&lt;strong&gt;sfxr&lt;/strong&gt; port for Haxe&lt;/a&gt;. It's fully compatible with &lt;a href="https://www.superflashbros.net/as3sfxr/"&gt;as3sfxr&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It supports Native and Flash OpenFL target for now. HTML5 coming soon.&lt;/p&gt;</summary><category term="sfxr"></category><category term="dev"></category></entry></feed>