Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl($output) in /home/people/public_html/blog/wp-includes/classes.php on line 584

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl($output) in /home/people/public_html/blog/wp-includes/classes.php on line 584

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el($output) in /home/people/public_html/blog/wp-includes/classes.php on line 584

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el($output) in /home/people/public_html/blog/wp-includes/classes.php on line 584

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el($output) in /home/people/public_html/blog/wp-includes/classes.php on line 603

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl($output) in /home/people/public_html/blog/wp-includes/classes.php on line 702

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl($output) in /home/people/public_html/blog/wp-includes/classes.php on line 702

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el($output) in /home/people/public_html/blog/wp-includes/classes.php on line 702

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el($output) in /home/people/public_html/blog/wp-includes/classes.php on line 702

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el($output) in /home/people/public_html/blog/wp-includes/classes.php on line 727

Strict Standards: Redefining already defined constructor for class wpdb in /home/people/public_html/blog/wp-includes/wp-db.php on line 58

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-includes/cache.php on line 99

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/people/public_html/blog/wp-includes/cache.php on line 404

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-includes/theme.php on line 576

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/people/public_html/blog/wp-includes/classes.php:584) in /home/people/public_html/blog/wp-content/plugins/alinks/alinks.php on line 23

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/people/public_html/blog/wp-includes/classes.php:584) in /home/people/public_html/blog/wp-content/plugins/alinks/alinks.php on line 23

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksModel.php on line 57

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 62

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 64

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 66

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksView.php on line 122

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksView.php on line 125

Strict Standards: Declaration of GeneralKeyphrases::doPhrase() should be compatible with aLinksKeyphrases::doPhrase(&$postObj, $keyphrase, $description, $defines) in /home/people/public_html/blog/wp-content/plugins/alinks/modules/general/mod.php on line 28

Strict Standards: Declaration of AmazonKeyphrases::doPhrase() should be compatible with aLinksKeyphrases::doPhrase(&$postObj, $keyphrase, $description, $defines) in /home/people/public_html/blog/wp-content/plugins/alinks/modules/amazon_basic/mod.php on line 26

Strict Standards: Declaration of DeeperBlogKeyphrases::doPhrase() should be compatible with aLinksKeyphrases::doPhrase(&$postObj, $keyphrase, $description, $defines) in /home/people/public_html/blog/wp-content/plugins/alinks/modules/deeper_blog/mod.php on line 202

Strict Standards: Declaration of GadabeKeyphrases::doPhrase() should be compatible with aLinksKeyphrases::doPhrase(&$postObj, $keyphrase, $description, $defines) in /home/people/public_html/blog/wp-content/plugins/alinks/modules/gadabe/mod.php on line 47

Strict Standards: Non-static method aLinksView::create() should not be called statically, assuming $this from incompatible context in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 74

Strict Standards: Only variables should be assigned by reference in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 83

Strict Standards: Non-static method aLinksView::create() should not be called statically, assuming $this from incompatible context in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 85

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksView_Settings.php on line 16

Strict Standards: Only variables should be assigned by reference in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 94

Strict Standards: Non-static method aLinksView::create() should not be called statically, assuming $this from incompatible context in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 96

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksView_Keyphrases.php on line 16

Strict Standards: Only variables should be assigned by reference in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 106

Strict Standards: Non-static method aLinksView::create() should not be called statically, assuming $this from incompatible context in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 108

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksView_Statistics.php on line 16

Strict Standards: Only variables should be assigned by reference in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 118

Strict Standards: Non-static method aLinksView::create() should not be called statically, assuming $this from incompatible context in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 120

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksView_Modules.php on line 16

Strict Standards: Only variables should be assigned by reference in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 130

Strict Standards: Non-static method aLinksView::create() should not be called statically, assuming $this from incompatible context in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 132

Strict Standards: Only variables should be assigned by reference in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 142

Strict Standards: Non-static method aLinksView::create() should not be called statically, assuming $this from incompatible context in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 144

Strict Standards: Only variables should be assigned by reference in /home/people/public_html/blog/wp-content/plugins/alinks/classes/aLinksController.php on line 154

Strict Standards: Non-static method aLinksApp::doSessionRedirect() should not be called statically in /home/people/public_html/blog/wp-content/plugins/alinks/alinks.php on line 78

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/sem-subscribe-me/sem-subscribe-me.php on line 621

Deprecated: Assigning the return value of new by reference is deprecated in /home/people/public_html/blog/wp-content/plugins/wassup/wassup.php on line 1164
joeldg - navigating the surface » graphics

graphics


My mockup for a touchscreen

above: my keyboard design that I threw together to show what kind of keyboards could be done in touch screens. here is the original image I made before I crammed it into the image with the macbook.

Scenario: You spill beer on a keyboard.
Scenario: You wear off the keys to your keyboard.
Scenario: You are sick of shaking out strange things from your keyboard when upside-down.
Scenario: You have keys that stick.

What are all common threads in those? Yes, the low keyboard, nobody really thinks about the keyboard that we all are sitting in front of, many of you now have your fingers poised above the ‘correct’ keys.

Next time you are in a restaurant or a bar that was established in the last five years, notice something about the systems the people there use, they are all touch-screen. Bar-none, you will NOT find someone punching actual buttons.. They break.

I propose something and actually it is a DREAM of mine, and this something is what I see all around me. Laptops DO NOT NEED ACTUAL KEYBOARDS. And, I mean laptops, not desktops. We don’t need them, and they are the ‘laptop trackballs’ that made a brief, yet abortive appearance a while back, why did we get rid of laptop trackballs? Because like a normal trackball they require maintenance, AND they break. And so do keyboards, if you have not noticed.

I will come out and say it, I HATE KEYBOARDS. The usb one I have now has had most it’s keys worn off and it is one year old, and I have seen that a full pint of beer fits in an iMac keyboard, I have two cats, and right now I know I am typing against a sheet of cat hair inside my keyboard most likely and, in my three laptops while my synaptic pad is great, those buttons are getting stuck and worthless. Let me repeat, I HATE KEYBOARDS, they are filthy and gross and invite a lot of junk to build up, I never like using another persons keyboard and right now I am pissed about my ‘c’ key which is misbehaving on a laptop that is a little more than a year old and I have to press it harder than the others..

Inventors, this is your mousetrap to reinvent, and while I am irritated someone might.

Look at the following ideas, and LOOK at the links, or nothing I say will make any sense, I am thinking of like a 17-inch collapsible iphone, keep that in mind with my comments below:

This one is nice (link)
This one is half-way there (link) but still is thinking “keyboard” which is wrong wrong wrong.
Here is another (link), and the same problem arises, why do you keeping thinking it has to be a keyboard? Do you not own a laptop, get with the times?

Getting closer (link)
, but still not really the idea..

These guys (link) are about the closest I have seen.. But, they need to be able to have the INSIDE edge push together to have less of a gap so you can have ONE big screen, and they don’t show the keyboard designs.

Now, while they have great ideas, I think that a perfect laptop for me ‘right now and moving forwards’ would be one that has:
a) dual touch screen, really… the whole damn thing, why waste all that real estate around the keys.
b) a way for me to set up my games to have touch screen, or even automatic in game installation in the “keyboard area”
c) I want it to be spill-proof, which means, no buttons… *maybe* a power button… or just have it turn on when open and skip that one *ewww* mechanical *done ewww* button..
d) I want the keyboard space to BE video/screen space when I fold it down flat and the whole thing is open.. I want that real estate.
e) I want this dead space on my keyboard to hold my calendar my clock, or whatever widget I want. I don’t want it in my work space… who had that dumb-ass idea, it is an aside to have a clock or a calendar next to your document or your code, slap it down in the generally unused space and give us our screen realestate back…
f) I want to be able to flip my laptop around/over and use the ’screen’ as the keyboard, and so on and so forth, this would be handy in a coffee shop or while doing a presentation to not have to ‘turn’ the whole thing, just tilt it over…
g) With the above, I want to be able to put the two halves of my laptop together and turn a 17″ screen with 12.67″ x 11.33″ into double the screen and have a full movie event if I want… and then, have slide-up menu’s for keyboards and controls and have it switch back to the down-side keyboard mode if I pull it back apart. (think about that)
h) I am a programmer and am not addicted to “key-feel” like others, and touchscreen is fine for a keyboard, as long as I can ‘rest’ my hands, fix that shit.
i) I want to have my OWN keyboard layouts (and I am working on some now in my little graphics program to show you what I mean) and if someone is arabic who is with me, I want to see the touchscreen switch on command to their language when I choose it. It has been FAR too long I have been stuck with layouts from people who think one way is ‘the way’ and won’t let me have my own layout ( i.e. I like ergo, but would like the keys further apart and split much further than any keyboard now, for me.. ALL the way to the right and left and leave the middle for something else, also I want my ‘F’ keys on the left side.. NOT on the top, with a modifiable layout I could easily accomplish this, but with a hardware board, and this crap that I am stuck with on my laptops I have NO choice, and it sucks, someone seriously I want to actually redo my keyboard FOR ME)..

These are not little ideas, these are big ideas, but I think that right now the only company that MIGHT get-it is apple, so… If you are listening apple, make my damn laptop and I will be first in-line to buy it and it would be the first apple product I have ever purchased, besides, you guys might make it even better that I dream about.. Until then, I will continue my NO on mac, because to me, you are worse than microsoft, you don’t just control the software you control the hardware as well (and charge *way* too much for that shit, look at the HP site, they have 4GB solid state tablet PC’s with max EVERYTHING for less than $1700.. Apple has NO touchscreen or true tablet PC as of this writing)

Now, that is my dream, and my ideas… Someone make it happen please?

UPDATE 03/11/09:
I was right Apple is having something in the works.

I have a somewhat simple idea I want to make into a game. I ‘know’ that I can do it in PHP with a mix of css/ajax/json tied together with JQuery but I would like it to be something that I do not have to maintain as heavily as a browser app where I need to worry about various browsers and what might be coming along in the next incarnation of Firefox or the dreaded IE (which has been a horrendous thorn in my side on every web project I have ever built). I decided that I should look into a game engine for speed and OMG I entered a whole new world of hobby projects, half-baked ideas, expensive solutions, HUGE specialty engines, paid as your go solutions shamelessly pandered like a vanity press (Torque) and then the do-it-yourself engines.

After reading reviews and actually looking through a WHOLE slough of these various engines I came to the conclusion that like everything else there are ‘tools for the job’ and you need to pick the right tool for the exact job at hand while maintaining flexibility for things that you may need to do later and for growth. It is also helpful to work with languages and tools you currently know and enjoy working with. So I came up with some basics for what I need for my project because picking a game engine is perhaps one of the single most important parts of coding a game.

  1. Cross platform - windows/linux/mac in that order of preference with at least win/linux
  2. scriptable - Lua/Squirrel or Python bindings with good network support
  3. large and active community - Busy forums that are helpful where people share code (I personally like to share code when I solve a particularly vexing problem)
  4. ability to handle 3d - but NOT specifically a FPS engine (this was a major issue with a lot of the engines I looked at), I am much more interested in third person and or 3d/iso’ish with bounded-selects for my particular game.
  5. Free or very cheap - Why on earth would I want to pay a lot of money for something that I would then be limited in my ability to share my enhancements with the community later? (especially when this is a small project with one coder) There are many other ways to make money on software.. Host servers for games, write books, paid support contracts etc.
  6. Speed of use and decent learning curve - I do not want to spend a year learning some crazy API or some language some developers made up to create their own games.
  7. No click and drag / piecemeal engines - I.E. If an engine states that you just need to click together parts and then fill in some info to create your game I get really suspicious.
  8. Customizable - Why would I want my game to look just like someone else’s game and have reviews go “Oh this game is just like ___ but acts sort of like ___ don’t bother because you have seen it all before”

Once I started comparing a lot of the engines to my list they dropped off like flies. So in the end, because of my particular needs and want of simplicity, I was left with OGRE3d and Irrlicht, both of which fit the bill nicely and are well documented and used render engines that are not specifically boxed into one corner or another or limited by insane design schemes and/or unusable for my purposes. While being somewhat simple (Irrlicht is dead simple and I would highly recommend for hacking out quick 3d visualizations). Both engines are specifically for C++, which is all good but after taking a nice close look at my projects needs, and the fact that it really is not that complex graphically, working with optimized C++ is really not a big need as I am thinking I might have at most 20 characters/models on my screen at the most and the rest will interface changes that are done via network. Having to comb through the myriad of C++ libraries that I am only passingly familiar with and having to learn their syntax, quirks and funky compile issues all while ‘also’ learning a render engine left me with a foul taste in my mouth. However I pressed on and started to brush up on my C++ (which I have not used Visual C++ or Code::Blocks in a very long time and both these have changed dramatically since my last foray into C++). Then, I ran across something interesting while perusing the OGRE wiki.

PyOgre is a python binding to Ogre and I started looking into it and thought to myself “hey, I know python and I know a lot of the libraries as well.. this could speed up my development time.. hrm”. PyOgre bindings hook directly into the Ogre libs and Python runs anywhere. This might actually fit the bill, it easily fits into my list of needs and is lightweight enough and has a very good learning curve for me. So to be thorough off I went to the python game resources on the python site and I decided to look into the other engines that are out there for python that may been an even better fit for my particular needs. Most of these are HIGHLY specialized libs for doing things like math visualization or specific bindings to other engines I had already thrown out. Then while combing through the list I found ONE engine (unfortunately) named Panda3D (also see the wikipedia article) (it rises above it’s cheeseball name upon inspection) that seems like a decent fit and I am now in early stage playing around with it. So far I have found sample code for almost all the elements of the game I want to create and it appears to have the full features of other engines as well, though I would not be locked into having to deal with more than I want and can easily crank out a server app using stackless python (which on a low end box could handle many more clients than I could probably find for my game)

So finally at the end of two weeks of downloading, compiling and trying out engines, attempting to interact with the various communities and ducking shyster companies that want to nickel and dime every naive, hobby or wanna-be game maker (which by the way I find deplorable as some companies could actually be discouraging a lot of potential talent from actually creating their games by doing this, thus hurting the industry as a whole) *cough* Torque *cough* I have found that I came full circle back to python (pygame was the first engine I worked on the initial stages of this idea, that was three years ago) and ended up blending some preconceptions I naively had about game engines.

I am left with a choice between two engines that are different but fit the bill.
On one hand I have the very open ended and extensible OGRE via PyOGRE which it easy enough to be up and running with and on the other I have Panda 3d which already has many of the Pathfinding, audio, animation and import modules I need but I could extend it out quickly (and if I want can also program in C++ for parts or all of it)
In a straight comparison to be up and running quickly I am leaning towards Panda3d but I am still doing a little research into PyOGRE. Hopefully my next post I will plop some code and screen shots in here.

In the meantime, I hope this post saves someone some time their search for an engine for a game that is NOT an FPS (sorry they all look the same to me now, and are boring) but it not some 2d 1990 nintendo looking mess.
If you looking to build an RTS (real time strategy) or simulation style game (think ISO’ish) I would recommend you look into what Python has to offer.

Google sketchup (free) and the pro Sketchup are fast and easy for anyone to learn, they are excellent resources to have under your belt for quickly creating some creative works.

Sketchup is an amazing program. If you don`t know what it is check out the tutorials and WATCH that first segement when you “launch the tutorial” it will go over some of the ease of use and “wow” factor involved in this program that google bought and is giving away.
One of the example images is here:


and here is one I made myself (for a game I am creating) and it took me all of about 15 minutes

A person who has never used this program can quickly model their house/apartment in probably thirty minutes (from install to finished picture, though some of the details would not be perfect, but …)

one of the things that google added was the 3d warehouse in which users can share their sketches and easily import other sketches into sketchup..

For a programmer trying to do some base graphics or even finished graphics and who does not really know a lot about computer graphics it comes HIGHLY recommended..

I will post more on the game I am developing jointly with some other people as I get some beta work done on it, but I am just so happy with sketchup I wanted to post here about it.