:hi: THE 2013 DBF UDG CHALLENGE! :hi:
;D Something New For The New Year! ;D
Some of you are probably too young to know what a UDG is, those who are in the same age bracket as me will remember User Defined Graphics in their old Speccy programs. Put simply, they were a way of redefining the way that characters in the font looked and they were used to make sprites and scenery in Basic Spectrum games. You'd define them using data statements as a grid of 1's and 0's. Where a bit was set a pixel would be drawn... You get the idea I am sure! :)
Nostalgia:So.. Since a UDG is essentially a letter then the screen could be filled with them in the same fashion as tiles and this is kind of what the challenge is about but let's bring it more up to date!
How Can You Make A Challenge From This You May Ask?The challenge this time is to create a demo - Any demo you like but the screen has to be rendered entirely out of a grid of UDG's with no post rendering effects and to make it more interesting and get the creative juices flowing there are some rules! ;)
In fact we're going to increase the capabilities of UDGs and let you have more colours! Yay!You may have two sets of UDG's which may not be changed throughout the demo, you'll load them in as images at the start of the demo or pre-calculate them before you show your first effect.
Each set of UDG's can contain up to 8 different UDG's and each UDG must be of 8*8 Pixels in size. There are two sets because each set can have it's own colour palette of 3 bitplanes (8 colours including transparency). The UDGs must be drawn in grid fasion so if you divide the screen position horizontally or vertically by 8 you may only draw a UDG at locations which produce no remainder when divided by 8 - This will ensure you conform to the grid.
At all times during your demo, your screen display should be entirely constructed out of any combination of the 16 different kinds of UDG in your two UDG sets.
To allow people to actually see the effect, we'll limit the screen resolution to a maximum of 1024 * 768 on this one.
The idea then is not necessarily to create something that looks like a Spectrum program (though you can if you want!) but one that draws it's inspiration from a bygone age.. Think of it as a version of the reduced res challenge with a twist!
Inspiration:Some demo groups have been using the ascii character set for years, your demo can look even cooler because you can use more colours in each block!
Here are the rules.
- Your Demo's screen display must be rendered out of 8*8 blocks.
- You may have 2 sets of 8*8 blocks, each set can contain 8 blocks, each set can have it's own 3 plane colour palette ( 8 colours including transparrancy)
- blocks may only be drawn at screen locations where x/8 produces no remainder and y/8 produces no remainder.
- You may NOT use any other kind of graphics in your display apart from the 8*8 blocks.
- The blocks must be defined at program start up, either loaded in at the beginning or calculated by the program at the beginning.
- You may NOT redefine any of the blocks or change their colour palette at any time after you've begun to render graphics to the screen.
- No post-render effects are allowed. The UDGs must remain in their unmolested form!
- Maximum screen resolution of 1024 * 768 applies.
- You must provide the raw image of the blocks you used in the archive attached to your post.
- Colour palettes are to remain the same throughout the demo and may not be cycled.
- You may write something for web browsers as long as it works in IE8 or Chrome or FF4 (or all!)
- If you use flash, please provide a link where people can see your demo. If you are placed in the top 3 your .swf will be added to the site as a .zip file You should attach the .swf in a zip file to your post.
- Wild entries are allowed and you may use any home computer / console. Anything that is not windows based should be entered as a Wild. Therefore you should upload it to youtube and post the video as your entry. It's cool to post the binaries as well.
- Please write something new for the challenge, no previously released stuff.
- Do not use ripped routines. (dlls, libs, fmod, sdl, frameworks etc are fine but say what you used please!).
- Entries to be posted in this forum please with the title [UDG] entry name.
- Entries may be posted between NOW and Midnight of [Saturday 23rd Feb 2013] - UK GMT
- The winner [S?] will be decided by a poll of forum users
- If 1st, 2nd or 3rd places are tied there will be a vote-off to decide the winner.
- Late entries absolutely will not be counted for voting, even if one second over the deadline.
- Please PM any correspondence regarding rules to me, don't discuss them here such posts will be removed and not answered.
- Please include a screenshot of your entry in your post.
- Please only post finished work, if you update your entry the final one will be voted on.
- After the submission deadline You may NOT post ANY further attachments to final or other versions of your entry ANYWHERE on this forum until voting has closed.
- You may post a video of the entry along with the binaries (useful if you use shaders or linux etc). In fact it is advisable that you do this if possible, especially if you use technology that not everyone possesses.
- Prize money is by Paypal only. No other forms will be discussed. PLEASE don't refuse your prize if you win!
- As well as appearing in DBF's showcase, your entry may be video captured and placed on DBF's youtube channel.
- You may enter as many times as you like, you will however only qualify for the highest prize you win. If you're voted as 1st and 2nd for example, you will win first prize and 2nd prize will fall to the person below you etc..
:carrot: Here are the prizes! :carrot:
- 1st Place £35 - Gold Signature Icon - 30 Karma
- 2nd Place £25 - Silver Signature Icon - 20 Karma
- 3rd Place £15 - Bronze Signature Icon - 10 Karma
- All entries get 2 Karma
Good Luck!
wow..
This is really right up my street towards the kind of engine i've been planning in my head.
Only one question, i'm using OpenGL ES 2.0 on Windows (The Mali Emulator)
Is this OK? (Obviously I'll make a video and screenshots to go with it if poss)
Hi Canopy,
Yeah it's cool as long as the blocks are drawn with no post-processing effects - We're quite flexible with platforms, if you think there will be any issues for anyone to run it (especially if emulated) then I'd suggest you post a video capture of your entry as well as the binaries just to make sure that as many people as possible see your entry and vote for it!
Good luck :)
That challenge might be fun!
At first I read UDG and wondered what the hell is that? Yes,. I never tried this on Spectrum but the same exist on Amstrad CPC with SYMBOL 65,[eight values in binary or hex or numeric format] and SYMBOL AFTER 65 to say you want to change after 65. So, yes! It's the same thing and I used to play a lot with the user defined chars in the past.
So, about the rules. You say 8 colors with transparency. This does mean that we have two layers of char screens that one can be transparent on the other in this single color? I guess it's not the case, I just use both sets in a single buffer, but the wording confuses me. I guess the transparent color is just black (or border color we choose?), so we have black and 7 colors. But if there is no real transparency, no second layer to be transparent to, this black can be just another color we choose, so we really have 8 colors and no need to be described as transparent.
Palette. Does it mean we have 8 colors for each character set but those two 8 color sets remains the same till the end? Or can we change the palete of the char sets every frame? Also,. it doesn't mean 8 unique colors per individual tile, like in the C64 multicolor, does it?
Sorry for the question, it just wasn't very clear to me which are the limitations.
Thanks Shockwave - you replied while I was editing the post!
Yeah I think I can get away with what I want to do within the rules.
I think I can see a way to bend them too, but I'll get the basic idea running first before I delve into that.
This really has landed at the right time to give me some motivation, Yesterday I reinstalled my desktop pc in my 'man cave', got visual studio all set up and fixed my code to work on that and was wondering what direction to go in next!
<333333333333 !!!!111
Love this concept!!
Hi Optimus:
Yep, UDG's on the Amstrad are more or less the same as the Spectrum :) I've used the term UDG, though I could have just as easily said Tiles, Tiles doesn't sound as good though!
Anyway, apologies for any confusion with the rules, I wrote them that way to ensure that the number of colours was clear but obviously I've not been as clear as I should be (I't been a while since I did one of these).
UDGs (tiles);
There are two tile sets.
Each tile set can contain up to 8 tiles.
There are two colour palettes, one for each tile set.
Individual tiles do not have individual palettes, they share the palette of the tile set they belong to.
The colour palette is 3 bitplanes so 8 possible combinations for each pixel.
Colour Palettes and tile sets are defined at the start of the program.
A solid tile (one where every bit is set at the same value) still counts as one of your tiles.
Colour palettes / tile sets are not to change at any time throughout the program, they are to remain as they were at start-up.
Hope that helps mate.
Quote from: Canopy on January 07, 2013
Thanks Shockwave - you replied while I was editing the post!
Yeah I think I can get away with what I want to do within the rules.
I think I can see a way to bend them too, but I'll get the basic idea running first before I delve into that.
This really has landed at the right time to give me some motivation, Yesterday I reinstalled my desktop pc in my 'man cave', got visual studio all set up and fixed my code to work on that and was wondering what direction to go in next!
Cool, this should be fun :)
I have had to add a couple of small points to the rules about attaching the tile images you used and about keeping colour palettes static throughout the demo because I hadn't explained them very well.
I'm in the same boat as you as it goes, I've had to re-install everything here too :) The deadline is kind though so at least there's time.
Quote from: Ferris on January 07, 2013
<333333333333 !!!!111
Love this concept!!
Would be cool to see something from you if you get chance Jake :)
can't promise anything these days, but there's a seed planted in the back of my head for it for sure :)
Quote from: Shockwave on January 07, 2013
Hi Optimus:
UDGs (tiles);
There are two tile sets.
Each tile set can contain up to 8 tiles.
There are two colour palettes, one for each tile set.
Individual tiles do not have individual palettes, they share the palette of the tile set they belong to.
The colour palette is 3 bitplanes so 8 possible combinations for each pixel.
Colour Palettes and tile sets are defined at the start of the program.
A solid tile (one where every bit is set at the same value) still counts as one of your tiles.
Colour palettes / tile sets are not to change at any time throughout the program, they are to remain as they were at start-up.
Hope that helps mate.
Thanks! I know my limitations now. Got already an idea working on my mind :)
Time to code on ST back ;D
This sounds like a really interesting compo theme Shockwave :) Is this the same as "textmode" demos on PC? Such as this (http://www.pouet.net/prod.php?which=25538).
Quote from: Shockwave on January 07, 2013
A solid tile (one where every bit is set at the same value) still counts as one of your tiles.
Does an empty tile (all transparent) count as a tile?
Quote from: Raizor on January 07, 2013
This sounds like a really interesting compo theme Shockwave :) Is this the same as "textmode" demos on PC? Such as this (http://www.pouet.net/prod.php?which=25538).
Hi Joe :) It's really similar and you could think of it as a text mode demo where you can create your own glyphs, the glyphs will of course have the possibility of looking much nicer than text, plus you can run in a higher resolution so we should get some really interesting ones.
Quote from: Canopy on January 07, 2013
Quote from: Shockwave on January 07, 2013
A solid tile (one where every bit is set at the same value) still counts as one of your tiles.
Does an empty tile (all transparent) count as a tile?
Hi Canopy, yes, even tiles which are empty count towards the total :)
Quote from: Shockwave on January 07, 2013
Quote from: Raizor on January 07, 2013
This sounds like a really interesting compo theme Shockwave :) Is this the same as "textmode" demos on PC? Such as this (http://www.pouet.net/prod.php?which=25538).
Hi Joe :) It's really similar and you could think of it as a text mode demo where you can create your own glyphs, the glyphs will of course have the possibility of looking much nicer than text, plus you can run in a higher resolution so we should get some really interesting ones.
Thanks for the clarification Nick :)
Quote from: Raizor on January 07, 2013
This sounds like a really interesting compo theme Shockwave :) Is this the same as "textmode" demos on PC? Such as this (http://www.pouet.net/prod.php?which=25538).
^ another one from the same person/group 'textmode :V' i just found on youtube http://www.youtube.com/watch?v=7ddGTShBOL8
pouet link for that one is here http://www.pouet.net/prod.php?which=25590
I'm beginning to really realise how limiting this is.. a LOT less than full text mode having 'only' 16 characters in total
depending what I do... i've already reserved 10 in my head.. ooops!
Quote from: Canopy on January 07, 2013
Quote from: Raizor on January 07, 2013
This sounds like a really interesting compo theme Shockwave :) Is this the same as "textmode" demos on PC? Such as this (http://www.pouet.net/prod.php?which=25538).
^ another one from the same person/group 'textmode :V' i just found on youtube http://www.youtube.com/watch?v=7ddGTShBOL8
pouet link for that one is here http://www.pouet.net/prod.php?which=25590
I'm beginning to really realise how limiting this is.. a LOT less than full text mode having 'only' 16 characters in total
depending what I do... i've already reserved 10 in my head.. ooops!
Yep, it's really limited - The best themes are the ones which are simple enough to let everyone have a go, but I'm sure that we will see some amazing uses for those 16 glyphs! :)
Interesting theme.
What I find a bit counter-intuitive in the context of "text-mode" is that I can't set fore-/background colours per character (as it's done on all low-end platforms), for example like this:
(http://www.abload.de/img/2979722132tkn6.png)
Quote from: hellfire on January 07, 2013
Interesting theme.
What I find a bit counter-intuitive in the context of "text-mode" is that I can't set fore-/background colours per character (as it's done on all low-end platforms), for example like this:
(http://www.abload.de/img/2979722132tkn6.png)
Hi Hellfire,
Good point, there is a little ambiguity in the rules as to whether bits that aren't set in any of the 3 planes are transparent so this would allow you to draw one character over another to achieve the look of the screen shot. Because I've used the word bit planes to describe the palette rule I'd be inclined to accept entries that did this as it opens up other interesting possibilities and doesn't really handicap anyone.
If I'm understanding this correctly, is this anything like the method used by the Mega Drive to render Sonic the Hedgehog?
(http://info.sonicretro.org/images/8/8d/SonMapEd07.png)
Or have I missed the mark?
Quote from: Shockwave on January 07, 2013
this would allow you to draw one character over another to achieve the look of the screen shot.
Well, thinking of text-mode I somehow find it even more counter-intuitive to draw two different characters at the same position.
The effect in the screenshot uses monochrome characters and each character-position on the screen gets it's own fore- and background color from a separate color table.
With fixed-colored tiles you will have to store each tile in all possible color-combinations. So this doesn't work with a total of 8 or 16 tiles.
I don't think this is a problem, just wanted to point out it's quite different from standard text-mode effects and much more limited.
Quote from: combatking0 on January 07, 2013If I'm understanding this correctly, is this anything like the method used by the Mega Drive to render Sonic the Hedgehog?
First of all they use tiles to construct repeating patterns for the scrolling background layers to save space:
(http://www.ladyada.net/images/fuzebox/NES_Super_Mario_Bros.png) => (http://www.ladyada.net/images/fuzebox/SMB-Tiles.gif)
So this is pretty much like a large text-mode screen which can be scrolled left and right.
And the same technique is applied for sprites. This way they can animate only those tiles which actually change (eg. sonic's face keeps constant most of the time).
I'm just wondering how people are planning to approach this from an implementation point of view? My initial thought was to render the standard screen to a buffer and then re-render it using the tile blocks, choosing the most appropriate tile block for each 8x8 square of the screen buffer.
I think i'm going about it a long winded way and using triangle strips to make the grid
it'll be updated/populated from an in-memory byte array that holds each 8x8 glyphs state. Its kind of like a back buffer, I could just use nibbles rather than bytes for this, but as i'm more concerned about getting it going i'm skipping concerns like that and going for simplicity plus i could use the top bit of the bytes in the state array to to flag updates for only parts that have changed.
so in short, i'm rendering from a state array, working within that like its a framebuffer, then updating the triangle strips either in its entirety or with the just changes.
I have spotted a slight loophole in the rules I may be able to exploit, which may make people think i'm performing one action a different way than how i really will be. I don't think it'll be massively impressive, but to me at least - technically very cool.
Something a friend noticed who started with 4*4 tiles and I first told him it's 8*8. Then he noticed that you said in the beginning of the rules that we are allowed to use tiles Up to 8*8 pixels. So, we can use smaller sizes or should they only be 8*8? Just to clarify for my friend..
Quote from: Optimus on January 08, 2013
Something a friend noticed who started with 4*4 tiles and I first told him it's 8*8. Then he noticed that you said in the beginning of the rules that we are allowed to use tiles Up to 8*8 pixels. So, we can use smaller sizes or should they only be 8*8? Just to clarify for my friend..
Hi mate,
The tiles definitely must be 8*8, sorry for any confusion.
Quote from: Canopy on January 08, 2013
I think i'm going about it a long winded way and using triangle strips to make the grid
it'll be updated/populated from an in-memory byte array that holds each 8x8 glyphs state. Its kind of like a back buffer, I could just use nibbles rather than bytes for this, but as i'm more concerned about getting it going i'm skipping concerns like that and going for simplicity plus i could use the top bit of the bytes in the state array to to flag updates for only parts that have changed.
so in short, i'm rendering from a state array, working within that like its a framebuffer, then updating the triangle strips either in its entirety or with the just changes.
I have spotted a slight loophole in the rules I may be able to exploit, which may make people think i'm performing one action a different way than how i really will be. I don't think it'll be massively impressive, but to me at least - technically very cool.
scrap this, after some reading i'm using a VBO and 'instancing' it over and over to setting colour, position etc via the shaders
Might be an idea to supply some sample tile sets to get people started Shockwave ;)
Canopy, nice :)
I've got an idea that's so strange, you may not believe it's a UDG at first sight.
Quote from: Raizor on January 09, 2013
Might be an idea to supply some sample tile sets to get people started Shockwave ;)
Sure, I've attached some badly drawn examples.. Ignore the white borders, they are just there so you can see where each tile begins and ends.
Quote from: combatking0 on January 09, 2013
I've got an idea that's so strange, you may not believe it's a UDG at first sight.
That's what I'm hoping! :)
Quote from: Raizor on January 08, 2013
I'm just wondering how people are planning to approach this from an implementation point of view? My initial thought was to render the standard screen to a buffer and then re-render it using the tile blocks, choosing the most appropriate tile block for each 8x8 square of the screen buffer.
I think that I'm going to use the frame buffer approach rather than writing custom drawing routines.
I'll reveal my tilesets - they lack the borders, but they're the ones I'm using for now.
Also a diagnostic image from the JavaScript UDG engine I'm writing. Many coders re-invent the wheel, but I've been re-inventing the triangle. :D
I've just noticed the JavaScript code (3.2kb) I've got so far is a lot larger than both of the tilesets put together. And the code will only get bigger.
nice!
Quote from: Raizor on January 09, 2013
Canopy, nice :)
considering when i posted that i'd never done it before, and now have it all up n running!
(I work full-time, so at best i get a couple hours mon/weds and maybe over the weekend - have managed sunday (before the comp existed) monday, tuesday and tonight so far though! tomorrow, friday, saturday will be a bust though)
after another coding session or two i'll have my actual grid/glyph renderer up and running and be playing with tiles themselves..!
Good news and fast work.
The deadline isn't until the 23rd of next month though.
Quote from: Shockwave on January 09, 2013
Quote from: Raizor on January 09, 2013
Might be an idea to supply some sample tile sets to get people started Shockwave ;)
Sure, I've attached some badly drawn examples.. Ignore the white borders, they are just there so you can see where each tile begins and ends.
Thanks Shockwave :)
Man!!! This theme is kool!!! I'll try to enter this after I finish my entry in another game compo (deadline for that is Feb 18th). That gives me a few days to do a simple entry. ;*)
Quote from: Raizor on January 09, 2013
Good news and fast work.
The deadline isn't until the 23rd of next month though.
Doesn't feel like fast work!
Overflowing with ideas I don't have time to do.. hah..
Priorities!
Quote from: relsoft on January 10, 2013
Man!!! This theme is kool!!! I'll try to enter this after I finish my entry in another game compo (deadline for that is Feb 18th). That gives me a few days to do a simple entry. ;*)
Would be cool to see something from you Rel :)
It's been a while, hope everything is fine with you!
As well as more effects than usual, I'm packing some extra evil into this comp entry - but you'll have to wait for the text scroller to finish before it reveals itself.
Good stufff all, looking forward to your prods! Yay for the new challenge!
I think I possibly may have an idea, maybe. I'm unusually busy (ie actually busy ;D) but I should be able to manage an entry of some kind.
Quote from: Kirl on January 11, 2013I'm unusually busy (ie actually busy ;D)
Ha! I hear that. It'd be cool to see a Kirl production out of this comp, though.
Thanks Yaloopy! It's a challenging theme. I'll have to mix in some extra cleverness, 2 tablespoons of awesome and a bucket of excellence to stand a fraction of a chance against our formidable oldschool crowd! :)
Hope to see something from you too!
Finally got my actual OpenGL ES VBO based grid renderer up n running last night. Next job is to write my 'GlyphBlt' routine before I start coding actual 'demo routines' - The fun part!
Learned a whole lot all ready, but at least now i'm in more comfortable territory of 'just' setting a pixel at a certain place to a certain colour.
I've realised with a 'fine' resolution parent grid for the glyphs the method i'm using isn't massively efficient when updating a lot of data (my test code has been doing 50%). I know a way around that - but I can improve that later if its really an issue which I don't think it will be for this demo.
This cold weather should help move things along! Don't think I'll get any days off work down here in Somerset though :(
Quote from: Canopy on January 14, 2013
This cold weather should help move things along! Don't think I'll get any days off work down here in Somerset though :(
It will be a flash in the pan mate.. I sometimes think that snow is only mentioned on the weather forecasts so that shops can sell out of bread... The weather sponsored by Hovis.
Back on topic, the renderer sounds great :)
Yeah I know it'll amount to not much, the other half is a teacher, she's begging for a snow day!
I wouldn't expect too much its my first ever proper opengl app, and my first ever 'demo' that wasnt a standalone thing since the early 90s in college!
Is it a coincidence that bits made a textmode demo?
http://pouet.net/prod.php?which=60942
Quote from: spitfire on January 16, 2013
Is it a coincidence that bits made a textmode demo?
http://pouet.net/prod.php?which=60942
I hope so ;)
Quote from: Raizor on January 16, 2013
Quote from: spitfire on January 16, 2013
Is it a coincidence that bits made a textmode demo?
http://pouet.net/prod.php?which=60942
I hope so ;)
me too! ;D
found this.. http://www.min.at/prinz/software/pixelfont/
might help someone :)
Since we already have a great comp entry using javascript (http://www.dbfinteractive.com/forum/index.php?topic=5920.0) - I think this might be also interesting:
Textmode in Javascript - Example (http://evilpaul.org/content/textmode/example2/)
Textmode in Javascript - Blog post (http://www.evilpaul.org/wp/?p=504)
Best,
benny!
Nice find - I've replied to his blog and the BIOS font could come in handy for future projects.
Quote from: Shockwave on January 07, 2013
- Entries may be posted between NOW and Midnight of [Saturday 23rd Feb 2013] - UK GMT
Under a week left!
I can't wait to see what everyone's been working on.
Since this is my first one, when do the entries normally come in? do they all appear towards the deadline?
Won't be able to work on mine after wednesday so it should be between then and the weekend.. I'll get the .zip up first, then some shots and a vid after as (i guess) they're not part of the deadline
Many of the entries tend to come in during the few days before the deadline, but some entries appear early on.
Cheers :) Figured it'd be like that.
Managed a few hours last night, got the shape of something together, was a bit disheartened a couple weeks ago as, probably due to my use of shaders i'd pushed the capabilities of the crappy onboard intel card in my desktop and wasn't getting very good frame rates. Have a new amd card now and running it in native gl-es mode i get a solid 60fps :)
Shit, I've left this late!!!!!!!!!
Last minute code coming up....
Quote from: Shockwave on February 23, 2013
Shit, I've left this late!!!!!!!!!
Last minute code coming up....
^ Me to!
I hit a surpring bug and I'm hammering it into an entry right now. :hammer:
I'm going to have a hard time deciding who to vote for. So many great entries.
Yep, me too.. I plan to put the voting live tomorrow evening. I wonder if we will get any last minute entries.
Unfortunately I'm going to have to go out tonight but I'll write up the summaries in my lunch hour tomorrow and put the voting on line at 8pm tomorrow night :)
Thank you to everyone who entered the challenge, I for one have really enjoyed seeing all your really excellent demos!