This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
KingofGamesYami's profile picture

Square Pixels

Started by KingofGamesYami, 30 June 2014 - 11:35 PM
KingofGamesYami #1
Posted 01 July 2014 - 01:35 AM
This has been suggested to death. Nobody has suggested any good way of implementing it though…

My idea is to either create a new block ( the pixel monitor ) or simply add these commands to the default monitors.

mon.togglePixelMode() --#switches between modes
mon.getPixelMode() --#returns "square" or "default"
mon.write( <string> ) --#in square mode, would write blank squares
mon.setPixelScale( <number> ) --#fails if in default, sets the pixel scale in square mode.  I would also suggest allowing this to get a bit smaller than normal, say 0.1
mon.getSize() --#same thing basically, but since the pixels are square it would return different y values (in square mode )

I would appreciate constructive criticism of my ideas.
example of non-constructive criticism
This suggestion is ******. It has been oversuggested millions of times and will never, ever be accepted. Why would you even post this you *****.
theoriginalbit #2
Posted 01 July 2014 - 02:31 AM
Nobody has suggested any good way of implementing it though…
lots of people have said that lately too. and I'm yet to see a good solution. everyone tries to address the problem of a lack of pixels, no one tries to address the other issues that arise from adding more pixels.
Edited on 01 July 2014 - 12:31 AM
Saldor010 #3
Posted 01 July 2014 - 01:45 PM
Nobody has suggested any good way of implementing it though…
lots of people have said that lately too. and I'm yet to see a good solution. everyone tries to address the problem of a lack of pixels, no one tries to address the other issues that arise from adding more pixels.

Not to mention that if they created square pixels, it would completely throw off the characters.
KingofGamesYami #4
Posted 01 July 2014 - 02:42 PM
Nobody has suggested any good way of implementing it though…
lots of people have said that lately too. and I'm yet to see a good solution. everyone tries to address the problem of a lack of pixels, no one tries to address the other issues that arise from adding more pixels.

Not to mention that if they created square pixels, it would completely throw off the characters.
Which is why I suggested "modes". In square pixel mode, you can't write characters.
Link149 #5
Posted 01 July 2014 - 03:37 PM
What if we want to write some text above an image then ?
theoriginalbit #6
Posted 01 July 2014 - 03:43 PM
Which is why I suggested "modes". In square pixel mode, you can't write characters.
it's not intuitive enough. not user-friendly enough. especially for the reason Link149 just stated (to name just one problem)

look to be bluntly honest, and this is as a ComputerCraft user, not as a staff member or anything official, etc., I really don't see anything like this ever being implemented, lets assume this is a perfectly valid and well thought through suggestion that covers every possible problem that making this change would introduce. For 28 versions ComputerCraft dan has kept it all the same, stating he didn't want to break existing scripts and such, however a time came where a change to the term api was 'needed' (debatable, but lets say needed) so it was made, this 'new and improved' term has been around for 4 versions, and I don't see it changing again any time in the near future!
adding extra pixels, or changing the pixels, or adding new colours, or anything of that nature, just doesn't fit into the way the mod is, the mod is designed to be simple, it is designed to be user-friendly and semi-intuative; designed for the new user, the user that may not know anything about programming and wants to get into it. making changes such as these in my opinion goes against everything ComputerCraft has been for since the start.
Edited on 01 July 2014 - 01:43 PM
Saldor010 #7
Posted 01 July 2014 - 05:45 PM
Which is why I suggested "modes". In square pixel mode, you can't write characters.

What happens if I switch "modes" then? Do my square pixels disappear when I want to have text on the screen? Or vice versa?
Edited on 01 July 2014 - 03:45 PM
KingofGamesYami #8
Posted 01 July 2014 - 09:22 PM
Which is why I suggested "modes". In square pixel mode, you can't write characters.

What happens if I switch "modes" then? Do my square pixels disappear when I want to have text on the screen? Or vice versa?
Yes, it would reset the screen.

@theoriginalbit: You make a good point. I'm not going to waste time arguing.
Saldor010 #9
Posted 01 July 2014 - 10:23 PM
Which is why I suggested "modes". In square pixel mode, you can't write characters.

What happens if I switch "modes" then? Do my square pixels disappear when I want to have text on the screen? Or vice versa?
Yes, it would reset the screen.

@theoriginalbit: You make a good point. I'm not going to waste time arguing.

… Yeah, um, I'd never use this suggestion then.
Edited on 01 July 2014 - 08:23 PM
Score_Under #10
Posted 11 August 2014 - 03:18 AM
I'd like to see this implemented too.

Regarding implementation details and avoiding breaking changes, you could take a leaf out of linux's book:

* Have a "console" and a "framebuffer" (i.e. have a text screen and a graphics screen)
* Only display one of those at a time
* Switching to the console clears the framebuffer but switching to the framebuffer does not clear the console
* Any text prints while the framebuffer is visible will go to the console, but only be visible if/when the display is switched back into text mode
* No terminal API needs to change, it will just interface with a console which may or may not be visible at the time. A new API would be used for pixel changes.
* Some basic pixel API could be created (set pixel, draw text, draw line, draw rectangle, draw circle, blit buffer, load image, save screenshot)

I agree with the concept of the suggestion but not the APIs suggested in the first post. Toggling would not be useful from a programming point of view because you usually want to end up in a specific mode, rather than just the opposite of what it was before. Writing text should all go to the console unless it is explicitly drawn. I'd drop pixel scale in favour of changing resolutions (because that's much more predictable from the programmer's point of view).
lednerg #11
Posted 09 November 2014 - 11:08 AM
I'd love a graphics mode that doesn't add pixels to the display, but squashes everything in the terminal (including text) vertically so the pixels and characters become 1:1 squares. There would be empty black bars on the top and bottom to make up the difference. It wouldn't be pretty, but neither were the alternative graphics modes in old timey home computers. The squashing would have to be accounted for in mouse events, but that's about it. I'm thinking it would be a boolean for the terminal object that any program could toggle on and off, and is reset on exit. I can't think of how this solution would break existing programs or put any extra strain on servers, but I'd love to learn how it could.

The only real downside (aside from the time spent making this for us) is that the font wouldn't match the rest of the game. However, this is a game that's based on square shapes, so it's a bit of a double edged sword since it would at least allow for truly square graphics. Currently I have to do a (newX = oldX * 1.5) thing on pixels so that rectangular objects appear squarish, but it's pretty meh. I still have to use at least six pixels to get a decent square on the screen (3x2). These aren't earth shattering problems or anything, I know, but it would be nice to be able to draw with squares.
Edited on 09 November 2014 - 06:12 PM