We detected that you may have an out of date or unsupported web browser. This tool, like many others on this site and across the web uses features only available in new web browsers. We reccommend updating your current browser or downloading Firefox or Chrome.
This is a list to help you decide what software to use for creating pixel art. It currently contains all the most popular desktop applications. If something is wrong or missing, let us know in the lospec subreddit.
A big multi-purpose image editing app, which if tweaked to the right settings can easily be used for pixel art. Some features like animation can be tricky to use, but the flexibility of the program allows you to mimic advanced tools such as index painting and palette manipulation.
You use px for sizes that remain constant, for example a 1px border.
You use em for sizes that should follow the font size, for example a 3.0em margin.
You use % for sizes that should take up a percentage of the parent, for example a 50% width.
I use relative / proportionate sizes whenever possible. I find it makes it much easier to make changes to layouts later. Also, using a size relative to a parent element means a change to the parent easily trickles down.
Traditionally, using relative sizes also allowed pages to look correct in various resolutions and was especially beneficial for browser zooming or minimum font sizes. But modern browsers now handle resizing extremely well with pixel-specific layouts, even enlarging images as necessary. So it's become less important to use relative sizes.
I'm pleased to announce that pixels has finally been published. This crate is my attempt to be the easiest way to create a hardware-accelerated pixel frame buffer. The stated goals and comparison with similar crates can be found in the readme. Below is a discussion of use cases where I imagine pixels will fill an existing need.
I wrote a CHIP-8 interpreter (technically not an emulator, but alas) yesterday using pixels and it was quite pleasant. At least, putting pixels on the screen was effortless. I'm not convinced that CHIP-8 is a great target for anything.
Just look at those big, chunky pixels! This is a 1-bpp display with a resolution of 64x32 pixels. In this screenshot, the display is scaled (by the GPU) to 50x the original size, just to give you some perspective.
Have you ever wanted to write your own software rasterizer, ray tracer, or ray caster? Plenty of excellent tutorials exist for the subject. My personal favorite is the tiny* series, but there's also the In One Weekend series, specific to ray tracing.
Sure, you could just save your bitmap to an image file and you could open it in an image viewer. But what's the fun in that? You have the technology to put that bitmap directly on your screen without the middleman. In fact, you could go all crazy with it and show your rendering progressively evolve at 144 frames per second.
Remember HTML5 canvas? Oh I do, fondly! pixels is a bit like ; it gives you some area to draw on. But it is not like the complementary CanvasContext2D API. You'll need another crate for 2D drawing primitives. Something like piet or raqote maybe. But to be honest, you probably want a GPU rasterizer for vector graphics, so pixels may not be the best choice for this use case. On the other hand if you used CanvasContext2D to poke color values directly into a byte array, you really do want pixels!
Finally, the most fun use case, in my opinion. I am a fan of rapid prototyping. And sometimes the fastest way to get something on screen is to just do pixel blits the old fashioned way. pixels is an excellent fit for rapidly prototyping. I mentioned earlier that it took me less than a day to get a working CHIP-8 interpreter. But I have been spending the great majority of my time working on a game using pixels, rather than needing improvements to the library itself.
A quick detour to discuss what pixels is not. It doesn't want to handle windowing, event loops, user input, audio, game engine stuff like scene management or ECS, 2D drawing primitives, image formats, or sprites.
It's a "Bring Your Own Window Management" crate through and through. Some developers like SDL2, some like Winit, some like GTK, some like Qt, some like Allegro (for some reason?), some like just sticking with native OS-provided APIs. And pixels doesn't care how you create a window! It only asks that the window manager implements raw-window-handle, and everything else will Just Work .
And in case you noticed that everything I've shown so far is black and white; yeah, I know. Both examples I decided to make with the crate are based on systems from the 1970s, before color was invented. (I hear the world looked pretty drab at the time.) Just a coincidence, I assure you; pixels will happily display any texture format that wgpu supports (which is a lot).
The non-square pixel aspect ratios feature is something that I supported in my [unreleased] attempt at providing a hardware-accelerated pixel buffer two years ago with gfx pre-ll. This is the kind of thing you want for emulating old systems like NES and Genesis/MegaDrive, whose screen resolutions are wildly misrepresented with square pixels. But this feature depends on multi-stage render passes...
The API is designed to allow multiple render passes to be added during the build phase. Conceptually pixels will pass the output texture from the previous stage as the input texture for the next stage. And it would allow for some great shader effects to be added to otherwise just a simple textured quad.
The obvious thing to do is adding a CRT shader with some barrel distortion, and an NTSC shader for fuzzy pixels that bleed into one another. But also it could be used for general special visual effects, like glowing lasers, wild implosions that distort the area around them, and other frilly fun stuff to make your games look amazing. I believe this is the true power of a hardware-accelerated pixel buffer that you cannot get out of a software pixel buffer. But it remains to be seen just how well it can work in practice.
And with that, pixels is up for grabs! Please feel free to provide any feedback, express concern or criticism, or just to share something you make with it. I'll be monitoring this thread, so this is a good place to talk about all things pixels. Thanks very much for reading to the end! You're the real hero.
I do have a full starting document detailing most of the core gameplay and what is available in terms of features, if you are interested in reading it. I also work full time as an artist, so this would be a slow burn in terms of development (no stress!).
Hi, I'm a pixel artist and video game programmer. I am very interested in working with you. Your project has roughly the same vision as mine. I'm making a game inspired by Mystera Legacy, I don't know if you know it. Working with you would only enrich my knowledge.
My name is Thomas van den Berg. I actually graduated with an MSc in Artificial Intelligence, but I was building games long before that. I grew up in the late DOS/early Windows era, and games were a bit simpler back then, which meant you could actually mess around with them by just looking in the files and changing stuff in INI files. I had always been fascinated by the virtual worlds that games immersed you in, and being able to go in and make them your own was such a powerful experience.
Finally, a friend introduced me to Flash. I used it to build little interactive videos and things that were almost games. I still had no clue about programming, I was just asking the friend to write and fix scripts for me. This was the golden age of Newgrounds, the raw creativity on display there was such an inspiration to me.
It was through Kingdom that I started making games professionally. I built the Kingdom Flash game as a hobby project throughout my last university years. Sitting down in my free time and drawing a little pixel art forest was a welcome break from writing research papers. The gameplay was almost an afterthought. I needed an excuse for the player to walk around in the little pixelated world. However, the free Flash game got quite a lot of traction. That led to Marco Bancale approaching me and proposing to make a mobile game out of it.
I feel really lucky that things happened so naturally. It feels like I never had to make the difficult decision of whether to give up another job and start trying to make it as an indie game developer.
Cloud Gardens is a spin-off of an earlier prototype I was working on. The idea was a kind of MMO where people build vertical habitats out of trash and grow gardens of plants on them. I realized it was not a game I could build by myself, but I wanted to salvage the plant simulation that was in there. So I decided to build a game purely about the plant sim, removing the player characters. The main challenge was to find a game design that uses the plant sim as the central mechanic, not just an aesthetic feature.
Pixel classification in YAPiC is based on deep learning with fully convolutional neural networks.
YAPiC was designed to make this kind of AI powered pixel classification simply applicable, i.e feasible to use for a PhD student in his/her imaging project.
Good question. You are right, the ilastik project file already contains a path string
for each image. However, if you move the .ilp and referenced .tif images
to another location, you will have to update the new path for each image in ilastik,
which is quite tedious if you have, say 30 training images.
In our standard workflow, users label data on their own laptops, then we move both
.ilp file and .tif images to a gpu workstation or server. Setting the new path
directly in the command line tool turned out to be much more convenient.
Correct: We recommend to save with Fiji, because we read the tiff header to get image dimensions. Reading pixels directly from .ilp file would make things safer (I guess that pixel values are saved directly in hfd5 container)
c80f0f1006