Trending Games | Elder Scrolls Online | WildStar | World of Warcraft | Guild Wars 2

  Network:  FPSguru RTSguru
Login:  Password:   Remember?  
Show Quick Gamelist Jump to Random Game
Members:2,736,392 Users Online:0
Games:713  Posts:6,174,327
Recent forum postsRSS
Active threads
Cloud view
List all forums
General Forums
Developers Corner General Discussion
Popular Game Forums
Click a status to find game forum
Game Forums
Click a letter to find game forum
A-C
2029 Online 2112: Revolution 2Moons 4Story 8BitMMO 9 Dragons A Mystical Land A Tale in the Desert III A3 ACE Online ARGO Online Aberoth Absolute Force Online Absolute Terror Achaea Adellion Aerrevan Aetolia, the Midnight Age Age of Armor Age of Conan Age of Empires Online Age of Mourning Age of Wulin Age of Wushu Aida Arenas Aika Aion Albion Online Alganon All Points Bulletin (APB) Allods Online Altis Gates Amazing World Anarchy Online Ancients of Fasaria Andromeda 5 Angels Online Anime Trumps Anmynor Anno Online Applo Arcane Hearts Arcane Legends ArchLord ArcheAge Archeblade Archlord X Asda 2 Asda Story Ashen Empires Asheron's Call Asheron's Call 2 Astera Online Astonia III Astro Empires Astro Lords: Oort CLoud Asura Force Atlantica Online Atriarch Aura Kingdom Aurora Blade Auto Assault Avatar Star Battle Dawn Battle Dawn Galaxies Battle for Graxia Battle of 3 Kingdoms Battle of the Immortals Battlecruiser Online Battlestar Galactica Online Battlestar Reloaded Beyond Protocol Black Aftermath Black Desert Black Gold Black Prophecy Black Prophecy Tactics: Nexus Conflict Blacklight Retribution Blade & Soul Blade Hunter Blade Wars Blazing Throne Bless Blitz 1941 Blood and Jade Bloodlines Champions Bounty Bay Online Brain Storm Brawl Busters. Brick-Force Bright Shadow Bullet Run Business Tycoon Online CTRacer Cabal Online Caesary Call of Camelot Call of Gods Call of Thrones Camelot Unchained Canaan Online Cardmon Hero Cartoon Universe CasinoRPG Castle Empire Castlot Celtic Heroes Champions Online Champions of Regnum Chaos Online Chrono Tales Citadel of Sorcery CitiesXL Citizen Zero City of Decay City of Heroes City of Steam City of Transformers City of Villains Civilization Online Clan Lord Clash of Clans Cloud Nine Club Penguin Colony of War Command & Conquer: Tiberium Alliances Company of Heroes Online Conquer Online Conquer Online 3 Continent of the Ninth (C9) Core Blaze Core Exiles Corum Online Craft of Gods Crimecraft Crimelife 2 Cronous Crota II Crusaders of Solaris Cultures Online Cyber Monster 2 Céiron Wars
D-F
D&D Online DC Universe DK Online DOTA DOTA 2 DUST 514 DV8: Exile Dalethaan Dance Groove Online Dark Age of Camelot Dark Ages Dark Legends Dark Orbit Dark Relic: Prelude Dark Solstice Dark and Light DarkEden Online DarkSpace Darkblood Online Darkest Dungeon Darkfall Darkfall: Unholy Wars Darkwind: War on Wheels Das Tal Dawn of Fantasy Dawntide DayZ Dead Earth Dead Frontier Deco Online Deepworld Defiance Deicide Online Dekaron Demons at the Horizon Desert Operations Destiny Diablo 3 Diamonin Digimon Battle Dino Storm Disciple Divergence Divina Divine Souls Dofus Dominus Online Dragon Ball Online Dragon Born Online Dragon Crusade Dragon Empires Dragon Eternity Dragon Nest Dragon Oath Dragon Pals Dragon Raja Dragon's Call Dragon's Call II Dragon's Prophet DragonSky DragonSoul Dragona Dragonica Dragons and Titans Dream of Mirror Online Dreamland Online Dreamlords: The Reawakening Drift City Duels Dungeon Blitz Dungeon Fighter Online Dungeon Overlord Dungeon Party Dungeon Rampage Dungeon Runners Dynastica Dynasty Warriors Online Dynasty of the Magi EIN (Epicus Incognitus) EVE Online Earth Eternal Earth and Beyond Earthrise Eclipse War Ecol Tactics Online Eden Eternal Edge of Space Einherjar - The Viking's Blood Elder Scrolls Online Eldevin Elf Online Elite: Dangerous Embers of Caerus Emil Chronicle Online Empire Empire & State Empire Craft Empire Universe 3 EmpireQuest Empires of Galldon End of Nations Endless Ages Endless Blue Moon Online Endless Online Entropia Universe EpicDuel Erebus: Travia Reborn Eredan Eternal Blade Eternal Lands Eternal Saga Ether Fields Ether Saga Online Eudemons Online EuroGangster EverEmber Online EverQuest Next EverQuest Online Adventures Evernight Everquest Everquest II Evony Exarch Exorace F.E.A.R. Online Face of Mankind Fairyland Online Fall of Rome Fallen Earth Fallen Sword Fallout Online Family Guy Online Fantage Fantasy Earth Zero Fantasy Realm Online Fantasy Tales Online Fantasy Worlds: Rhynn Faunasphere Faxion Online Ferentus Ferion Fiesta Online Final Fantasy XI Final Fantasy XIV: A Realm Reborn Firefall Fists of Fu Florensia Flyff Football Manager Live Football Superstars Force of Arms Forge Forsaken World Fortnite Fortuna Forum for Discussion of Everlight Freaky Creatures Free Realms Freesky Online Freeworld Fung Wan Online Furcadia Fury Fusion Fall
G-L
GalaXseeds Galactic Command Online Game of Thrones: Seven Kingdoms Gameglobe Gate To Heavens Gates of Andaron Gatheryn Gauntlet Gekkeiju Online Ghost Online Ghost Recon Online Gladiatus Glitch Global Agenda Global Soccer Gloria Victis Glory of Gods GoGoRacer Goal Line Blitz Gods and Heroes GodsWar Online Golemizer Golf Star GoonZu Online Graal Kingdoms Granado Espada Online Grand Chase Grand Fantasia Grepolis Grimlands Guild Wars Guild Wars 2 Guild Wars Factions Guild Wars Nightfall H1Z1 Habbo Hotel Hailan Rising HaloSphere2 Haven & Hearth Hawken Hearthstone: Heroes of Warcraft Helbreath Hellgate Hellgate: London Hello Kitty Online Hero Online Hero Zero Hero's Journey Hero: 108 Online HeroSmash Heroes & Generals Heroes in the Sky Heroes of Bestia Heroes of Gaia Heroes of Might and Magic Online Heroes of Thessalonica Heroes of Three Kingdoms Heroes of the Storm Hex Holic Online Hostile Space Hunter Blade Huxley Illutia Illyriad Immortals USA Imperator Imperian Inferno Legend Infestation: Survivor Stories Infinite Crisis Infinity Infinity Iris Online Iron Grip: Marauders Irth Worlds Island Forge Islands of War Istaria: Chronicles of the Gifted Jade Dynasty Jagged Alliance Online Juggernaut Jumpgate Jumpgate Evolution KAL Online Kakele Online Kaos War Karos Online Kartuga Kicks Online King of Kings 3 Kingdom Heroes Kingdom Under Fire II Kingdom of Drakkar Kingory Kings and Legends Kings of the Realm KingsRoad Kitsu Saga Kiwarriors Knight Age Knight Online Knights of Dream City Kothuria Kung Foo! Kunlun Online L.A.W. LEGO Universe La Tale Land of Chaos Online Landmark Lands of Hope: Phoenix Edition LastChaos League of Angels League of Legends - Clash of Fates Legend of Edda: Vengeance Legend of Golden Plume Legend of Katha Legend of Mir 2 Legend of Mir 3 Legendary Champions Lego Minifigures Online Life is Feudal Light of Nova Lime Odyssey Line of Defense Lineage Lineage Eternal: Twilight Resistance Lineage II Linkrealms Loong Online Lord of the Rings Online Lords Online Lost Saga Lucent Heart Lunia Lusternia: Age of Ascension Luvinia World
M-Q
MU Online Mabinogi Maestia: Rise of Keledus MagiKnights Magic Barrage Magic World Online Manga Fighter MapleStory Martial Heroes Marvel Heroes Marvel Super Hero Squad Online Marvel: Avengers Alliance MechWarrior Online Megaten Meridian 59 : Evolution Merlin MetalMercs Metaplace Metin 2 MicroVolts Midkemia Online Might & Magic Heroes: Kingdoms MilMo Minecraft Mini Fighter Minions of Mirth Ministry of War Monato Esprit Monkey King Online Monkey Quest Monster & Me Monster Madness Online MonsterMMORPG Moonlight Online: Tales of Eternal Blood Mordavia Mortal Online Mourning My Lands Myst Online: URU Live Myth Angels Online Myth War Myth War 2 Mytheon Mythic Saga Mythos N.E.O Online NIDA Online Nadirim Naviage: The Power of Capital Navy Field Need for Speed World Nemexia Neo's Land NeoSteam Neocron Nether Neverwinter Nexus: The Kingdom Of The Winds NinjaTrick NosTale Novus Aeterno Oberin Odin Quest Odyssey RPG Ogre Island Omerta 3 Online Boxing Manager Onverse Order & Chaos Online Order of Magic Original Blood Origins Return Origins of Malu Orion's Belt Otherland Forums OverSoul Overkings Oz Online Oz World Pandora Saga Pantheon: Rise of the Fallen Panzar Parabellum Parallel Kingdom Parfait Station Path of Exile Pathfinder Online Perfect World Perpetuum Online Phantasy Star Online 2 Phantasy Star Universe Phoenix Dynasty Online Phylon Pi Story Picaroon Pirate Galaxy Pirate Storm Pirate101 PirateKing Online Pirates of the Burning Sea Pirates of the Caribbean Online Pixie Hollow Planeshift Planet Arkadia Planet Calypso PlanetSide 2 Planetside Planets³ Playboy Manager Pocket Legends Pockie Ninja Pockie Pirates Pockie Saints PoxNora Prime World Prime: Battle for Dominus Priston Tale Priston Tale II Prius Online Project Blackout Project Powder Project Titan Forums Project Wiki Puzzle Pirates Quickhit Football
R-S
R2 Online RAN Online RF Online ROSE Online Rage of 3 Kingdoms Ragnarok Online Ragnarok Online II RaiderZ Rakion Rappelz RappelzSEA Ravenmarch Realm Fighter Realm of the Mad God Realm of the Titans Realms Online Reclamation Red Stone Red War: Edem's Curse Regnum Online Remnant Knights Renaissance Repulse Requiem: Memento Mori Rift RiotZone Rise Rise of Dragonian Era Rise of Empire Rise of the Tycoon Rising of King Risk Your Life Rivality Rockfree Rohan: Blood Feud Role Play Worlds Roll n Rock Roma Victor Romadoria Rosh Online Roto X Rubies of Eventide Ruin Online Rumble Fighter Runes of Magic Runescape Rust Rusty Hearts Ryzom S4 League SAGA SD Gundam Capsule Fighter Online SMITE SUN Sagramore Salem SaySayGirls Scarlet Blade Scions of Fate Seal Online: Evolution Second Life Secret of the Solstice Seed Serenia Fantasy Seven Seas Saga Seven Souls Online Sevencore Shadow of Legend Shadowbane Shadowrun Online Shaiya Shards Online Shattered Galaxy Sho Online Shot Online Shroud of the Avatar SideQuest Siege on Stars Sigonyth: Desert Eternity Silkroad Online Skyblade Skyforge SmashMuck Champions Smoo Online Soldier Front Soul Master Soul Order Online Soul of Guardian Space Heroes Universe Sparta: War of Empires Spellcasters Sphere Spiral Knights Spirit Tales Splash Fighters Squad Wars Star Citizen Star Sonata 2 Star Stable Star Supremacy Star Trek Online Star Trek: Infinite Space Star Wars Galaxies Star Wars: Clone Wars Adventures Star Wars: The Old Republic StarQuest Online Stargate Worlds Starlight Story Starpires State of Decay SteelWar Online Stone Age 2 Stormfall: Age of War Storybricks Stronghold Kingdoms Sudden Attack Supremacy 1914 Supreme Destiny Sword Girls Sword of Destiny: Rise of Aions SwordX Swords of Heavens Swordsman
T-Z
TERA TS Online Tabula Rasa Tactica Online Tales Runner Tales of Fantasy Tales of Pirates Tales of Pirates II Tales of Solaris Talisman Online Tamer Saga Tank Ace Tantra Online Tatsumaki: Land at War Terra Militaris TerraWorld Online Thang Online The 4th Coming The Agency The Aurora World The Black Watchmen The Chronicle The Chronicles of Spellborn The Crew The Division The Hammers End The Legend of Ares The Lost Titans The Matrix Online The Mighty Quest for Epic Loot The Missing Ink The Mummy Online The Myth of Soma The Pride of Taern The Realm Online The Repopulation The Secret World The Sims Online The Strategems The West Theralon There Therian Saga Thrones of Chaos Tibia Tibia Micro Edition Tiger Knight Titan Siege Titans of Time Toontown Online Top Speed Topia Online Torchlight Total Domination Transformers Universe Traveller AR Travia Online Travian Trials of Ascension Tribal Hero Tribal Wars Tribes Universe Trickster Online Trove Troy Online True Fantasy Live Online Turf Battles Twelve Sky Twelve Sky 2 Twilight War Tynon U.B. Funkeys UFO Online URDEAD Online Ultima Forever: Quest for the Avatar Ultima Online Ultima X: Odyssey Ultimate Naruto Ultimate Soccer Boss Uncharted Waters Online Undercover 2: Merc Wars Underlight Unification Wars Universe Online Utopia Valkyrie Sky Vampire Lord Online Vanguard: Saga of Heroes Vanquish Space Vector City Racers Vendetta Online Victory - Age of Racing Vindictus Virtonomics Vis Gladius Visions of Zosimos VoidExpanse Voyage Century Online W.E.L.L. Online WAR (Warhammer Online) WAR2 Glory WYD Global Wakfu War Thunder War of 2012 War of Angels War of Legends War of Mercenaries War of Thrones War of the Immortals WarFlow Waren Story Wargame1942 Warhammer 40,000: Eternal Crusade Warhammer 40K: Dark Millennium Online Warhammer Online: Wrath of Heroes Warkeepers Warrior Epic Wartune WebLords Wild West Online WildStar Wind of Luck WindSlayer 2 Wings of Destiny Wish Wizard101 Wizardry Online Wizards and Champions Wonder King Wonderland Online World Golf Tour World of Battles World of Darkness World of Heroes World of Kung Fu World of Pirates World of Speed World of Tanks World of Tanks Generals World of Warcraft World of Warplanes World of Warships World of the Living Dead WorldAlpha Wurm Online Xenocell Xiah Xsyon Xulu YS Online Yitien ZU Online Zentia Zero Online Zero Online: The Andromeda Crisis Zodiac Online Zombies Ate My Pizza eRepublik

MMORPG.com Discussion Forums

General Discussion

General Discussion 

Hardware  » How often does a 60 Hz monitor refresh?

2 Pages « 1 2 Search
31 posts found
  Quizzical

Guide

Joined: 12/11/08
Posts: 13110

 
OP  1/15/13 2:54:36 PM#21
Originally posted by lizardbones

 


Originally posted by Quizzical

Originally posted by Ridelynn A better question may be to take a step back and ask: Why are you trying to write a game in Java in the first place? There are a lot of drawbacks to picking Java in particular to program with.
Because I didn't expect to get very far, and then didn't want to scrap it and start over.

 

Exactly what drawbacks should I be warned about?  Java and OpenGL seem to have all of the capabilities that I need, though I haven't tested Java's sound and network capabilities to see just how robust they are.  I'm not a computer programmer by training, so I really don't know the pros and cons of this language versus that one.




Was it a shock to end up with a functional game, or was it a nice surprise?

 

Functional is perhaps a relative thing.  I can have a placeholder character move around in the game world, but there are still a ton of things missing.

I was surprised at how math-intensive computer graphics is.  I expected there to be a lot of linear algebra, of course.  But tessellation, the big new feature of DirectX 11 and OpenGL 4, basically involves a bunch of graduate level mathematics.  No wonder most games don't use it, or just make some token use of tessellation that misses the whole point of it.

There were a lot of things where I thought, I've never seen a game do such and such, but I think it would be cool if one did.  So let's try it.  Some such efforts fell flat.  For example, I spent about a day trying to create my own function for the depth buffer before realizing how OpenGL basically locked you into only two choices (3D perspective or isometric)--and why they chose to do it that way.  It made a ton of sense for performance reasons ten years ago, though it would be nice to have more options today.  But at least now I understand why clipping requires homogeneous coordinates in real-projective space RP^3, which is probably completely baffling to most people who do 3D graphics.

This thread was based on the idea of, "Wouldn't it be cool if you could make a game always finish rendering a frame right before the video card sends it to the monitor, and not render any extra frames?"  I won't be able to do that perfectly, but I might be able to get pretty close.  I think I should wait until I have more stuff done and come back to it later.

But some things actually worked.  For example, I don't load any textures off of the hard drive.  Rather, I generate them all on the processor.  That means no AAA graphics, but it also means a doable 3D world that looks decent enough without any artists on the project at all.  I'll post some screenshots for you to see.  You can click for a larger picture, though it won't show full size for some reason:

The second screenshot actually needs some explanation.  It's dark off in the distance because the world is round, and it gets dark at night.  If I turned the camera around, you'd be able to see the sun rising--and yes, actually moving.  One full game-day takes one real-life hour.  The sky also gets darker as the sun gets lower in the sky, which is why it's different colors in the different screenshots.

It's a spherical world about 1 kilometer in radius.  There are about 15,000 trees, and every single tree looks different from every other.  There are likewise about 10,000 rocks, and every single rock looks different from every other.  There are twelve cities, most of which aren't finished yet, but I gave you screenshots of three of them.  The clocks in the third screenshot actually run and display the time in the local in-game time zone.

The blue and purple spotted cylinder in the middle of each screenshot is my placeholder character.  It's going to be deleted eventually, but I needed a way to test collision detection, and that's hard to do if I can't see where I am.

But the thing that I think is really amazing is that the entire game takes less space at the moment than any one of those four screenshots saved as a .jpeg file does by itself.

I'm going to try to make an extremely versatile character creator that will let players create entire new species to put in the game.  The idea will be you can make your character look like whatever you want--and then I get to use it randomized somewhat (so it won't look exactly like you) as mobs for other players to fight.  If I can get that to work the way I want, then it will be time to release a demo and look for a publisher.

  lizardbones

Elite Member

Joined: 6/11/08
Posts: 10376

I've become dependent upon spell check. My apologies for stupid grammatical errors.

1/15/13 3:08:26 PM#22


Originally posted by Quizzical

Originally posted by lizardbones  

Originally posted by Quizzical

Originally posted by Ridelynn A better question may be to take a step back and ask: Why are you trying to write a game in Java in the first place? There are a lot of drawbacks to picking Java in particular to program with.
Because I didn't expect to get very far, and then didn't want to scrap it and start over.   Exactly what drawbacks should I be warned about?  Java and OpenGL seem to have all of the capabilities that I need, though I haven't tested Java's sound and network capabilities to see just how robust they are.  I'm not a computer programmer by training, so I really don't know the pros and cons of this language versus that one.
Was it a shock to end up with a functional game, or was it a nice surprise?  
Functional is perhaps a relative thing.  I can have a placeholder character move around in the game world, but there are still a ton of things missing.

I was surprised at how math-intensive computer graphics is.  I expected there to be a lot of linear algebra, of course.  But tessellation, the big new feature of DirectX 11 and OpenGL 4, basically involves a bunch of graduate level mathematics.  No wonder most games don't use it, or just make some token use of tessellation that misses the whole point of it.

There were a lot of things where I thought, I've never seen a game do such and such, but I think it would be cool if one did.  So let's try it.  Some such efforts fell flat.  For example, I spent about a day trying to create my own function for the depth buffer before realizing how OpenGL basically locked you into only two choices (3D perspective or isometric)--and why they chose to do it that way.  It made a ton of sense for performance reasons ten years ago, though it would be nice to have more options today.  But at least now I understand why clipping requires homogeneous coordinates in real-projective space RP^3, which is probably completely baffling to most people who do 3D graphics.

This thread was based on the idea of, "Wouldn't it be cool if you could make a game always finish rendering a frame right before the video card sends it to the monitor, and not render any extra frames?"  I won't be able to do that perfectly, but I might be able to get pretty close.  I think I should wait until I have more stuff done and come back to it later.

But some things actually worked.  For example, I don't load any textures off of the hard drive.  Rather, I generate them all on the processor.  That means no AAA graphics, but it also means a doable 3D world that looks decent enough without any artists on the project at all.  I'll post some screenshots for you to see.  You can click for a larger picture, though it won't show full size for some reason:

The second screenshot actually needs some explanation.  It's dark off in the distance because the world is round, and it gets dark at night.  If I turned the camera around, you'd be able to see the sun rising--and yes, actually moving.  One full game-day takes one real-life hour.  The sky also gets darker as the sun gets lower in the sky, which is why it's different colors in the different screenshots.

It's a spherical world about 1 kilometer in radius.  There are about 15,000 trees, and every single tree looks different from every other.  There are likewise about 10,000 rocks, and every single rock looks different from every other.  There are twelve cities, most of which aren't finished yet, but I gave you screenshots of three of them.  The clocks in the third screenshot actually run and display the time in the local in-game time zone.

The blue and purple spotted cylinder in the middle of each screenshot is my placeholder character.  It's going to be deleted eventually, but I needed a way to test collision detection, and that's hard to do if I can't see where I am.

But the thing that I think is really amazing is that the entire game takes less space at the moment than any one of those four screenshots saved as a .jpeg file does by itself.

I'm going to try to make an extremely versatile character creator that will let players create entire new species to put in the game.  The idea will be you can make your character look like whatever you want--and then I get to use it randomized somewhat (so it won't look exactly like you) as mobs for other players to fight.  If I can get that to work the way I want, then it will be time to release a demo and look for a publisher.




Are the trees and the rocks persistent and are the textures for each of these things persistent?

For every large, complex problem, there is a simple, clear solution that also happens to be absolutely wrong.

  Quizzical

Guide

Joined: 12/11/08
Posts: 13110

 
OP  1/15/13 3:19:56 PM#23
Originally posted by lizardbones

Are the trees and the rocks persistent and are the textures for each of these things persistent?

If you start a new game, they'll all be in different places, as will the mobs that don't yet exist.  There is a substantial emphasis on exploring the game world, which doesn't work if everything is always in the same places.

But if you save a game and load it another day, or go far away and then come back, the trees and rocks will be exactly where they were before, with the same textures, shapes, positions, and everything.  Plug in a different random seed, get a different game world.  Plug in the same random seed and get the same game world as before.

When it loads the game, it specifies a random seed and some parameters for every single texture in the game world and keeps that in system memory on the client.  It periodically sees what you're close to and creates textures for objects as you come in range, then deletes the texture once you move far enough away.  If you come back, it will again create a texture from the same function, parameters, and random seed, which will give you exactly the same texture.

But if textures are generated randomly, why keep a fixed resolution?  Why not let players adjust the texture resolution up and down?  Changing the texture resolution will make the textures look different.  But that's okay, as it means that if you've got 3 GB of video memory, I can put it to good use with ultra high resolution textures.  (Actually, you'd better have at least a quad core processor to generate those textures.)  And if you've only got 256 MB, I can use low resolution textures that only need to buffer 20 MB or so in your video memory to make the game playable.

  lizardbones

Elite Member

Joined: 6/11/08
Posts: 10376

I've become dependent upon spell check. My apologies for stupid grammatical errors.

1/15/13 5:08:23 PM#24


Originally posted by Quizzical

Originally posted by lizardbones Are the trees and the rocks persistent and are the textures for each of these things persistent?
If you start a new game, they'll all be in different places, as will the mobs that don't yet exist.  There is a substantial emphasis on exploring the game world, which doesn't work if everything is always in the same places.

But if you save a game and load it another day, or go far away and then come back, the trees and rocks will be exactly where they were before, with the same textures, shapes, positions, and everything.  Plug in a different random seed, get a different game world.  Plug in the same random seed and get the same game world as before.

When it loads the game, it specifies a random seed and some parameters for every single texture in the game world and keeps that in system memory on the client.  It periodically sees what you're close to and creates textures for objects as you come in range, then deletes the texture once you move far enough away.  If you come back, it will again create a texture from the same function, parameters, and random seed, which will give you exactly the same texture.

But if textures are generated randomly, why keep a fixed resolution?  Why not let players adjust the texture resolution up and down?  Changing the texture resolution will make the textures look different.  But that's okay, as it means that if you've got 3 GB of video memory, I can put it to good use with ultra high resolution textures.  (Actually, you'd better have at least a quad core processor to generate those textures.)  And if you've only got 256 MB, I can use low resolution textures that only need to buffer 20 MB or so in your video memory to make the game playable.




Well, that is pretty cool. You may not be a programmer by trade, but I am, and that's pretty cool.

For every large, complex problem, there is a simple, clear solution that also happens to be absolutely wrong.

  Ridelynn

Elite Member

Joined: 12/19/10
Posts: 3303

1/15/13 6:53:44 PM#25


Originally posted by Quizzical

Originally posted by Ridelynn A better question may be to take a step back and ask: Why are you trying to write a game in Java in the first place? There are a lot of drawbacks to picking Java in particular to program with.
Because I didn't expect to get very far, and then didn't want to scrap it and start over.

Exactly what drawbacks should I be warned about?  Java and OpenGL seem to have all of the capabilities that I need, though I haven't tested Java's sound and network capabilities to see just how robust they are.  I'm not a computer programmer by training, so I really don't know the pros and cons of this language versus that one.


Well, for just programming as a hobby, there isn't anything wrong with it. It's a free and open source programming tool that has a lot of benefits:
a) It's free and open source
b) easily available
c) has an established history, and is still supported by a major corporate sponser (Oracle)
d) is readily taught in many schools as the first or primary language for programming
e) is functionally complete and strongly typed
f) a lot of existing code and tutorials exist
g) "Write once, Run anywhere" promise (I used quotes around that, I'll explain below)
h) baked-in memory management
i) capability to write internet-distributed apps (applets/Java Web Start)

There are, however, some drawbacks.

a) It is not considered an industry standard - not a lot of commercial software out there is actually written with Java - most commercial software is written in some variation of C, although you can make a strong case for several different langauges (including Java) as to which would be "The Best" for any particular application
b) The JIT/VM - you are relying on not only your end-users hardware for performance, but also a middleware Just-in-time compiler and virtual machine. The quality and availability of these vary widely from platform to platform.
c) Security - the US is advising people to actively uninstall Java unless they depend on it: From just yesterday
d) "Write once, Run anywhere" quickly became "Write once, debug everywhere" due to differences in JIT/VM's on different platforms. GUI elements in particular are notoriously difficult to support.
e) Forced object-oriented design. Not every program lends itself well to OOP design fundamentals, but you don't really have any other way around it in Java.
f) The JIT/VM insulates you from direct access to hardware, or even device drivers, and in some cases even the OS
g) Writing anything web-based (applets) requires a third-party plug-in (the Java plugin)

If you are just poking around OpenGL for a hobby, there is nothing wrong with Java

If your trying to do something as intricate as accurately time the frame buffer for a graphics application, your going to get extremely frustrated because there are a lot of things outside of your control that are going to affect that, both from Windows and from Java (namely the Windows scheduler and the Java JIT/VM).

If you are looking for this level of accuracy, it can be done with Windows, but it would probably more easily be done with C/C++ with XWindows on an open source OS (where you can see the OS source code, and potentially even modify it as required, and your application can drop all the way to the assembly level to tightly control tolerances): you can keep the same OpenGL APIs, but you'll lose the commercially stable video device driver (Windows drivers just get more support, and AMD is notoriously poor on Linux drivers, although they do exist but with Windows the OS code is blocked off and you can only really tell what's going on based on documentation or lots and lots of debugging info).

  Quizzical

Guide

Joined: 12/11/08
Posts: 13110

 
OP  1/15/13 7:38:21 PM#26
Originally posted by Ridelynn

 


Originally posted by Quizzical

Originally posted by Ridelynn A better question may be to take a step back and ask: Why are you trying to write a game in Java in the first place? There are a lot of drawbacks to picking Java in particular to program with.
Because I didn't expect to get very far, and then didn't want to scrap it and start over.

 

Exactly what drawbacks should I be warned about?  Java and OpenGL seem to have all of the capabilities that I need, though I haven't tested Java's sound and network capabilities to see just how robust they are.  I'm not a computer programmer by training, so I really don't know the pros and cons of this language versus that one.


 

Well, for just programming as a hobby, there isn't anything wrong with it. It's a free and open source programming tool that has a lot of benefits:
a) It's free and open source
b) easily available
c) has an established history, and is still supported by a major corporate sponser (Oracle)
d) is readily taught in many schools as the first or primary language for programming
e) is functionally complete and strongly typed
f) a lot of existing code and tutorials exist
g) "Write once, Run anywhere" promise (I used quotes around that, I'll explain below)
h) baked-in memory management
i) capability to write internet-distributed apps (applets/Java Web Start)

There are, however, some drawbacks.

a) It is not considered an industry standard - not a lot of commercial software out there is actually written with Java - most commercial software is written in some variation of C, although you can make a strong case for several different langauges (including Java) as to which would be "The Best" for any particular application
b) The JIT/VM - you are relying on not only your end-users hardware for performance, but also a middleware Just-in-time compiler and virtual machine. The quality and availability of these vary widely from platform to platform.
c) Security - the US is advising people to actively uninstall Java unless they depend on it: From just yesterday
d) "Write once, Run anywhere" quickly became "Write once, debug everywhere" due to differences in JIT/VM's on different platforms. GUI elements in particular are notoriously difficult to support.
e) Forced object-oriented design. Not every program lends itself well to OOP design fundamentals, but you don't really have any other way around it in Java.
f) The JIT/VM insulates you from direct access to hardware, or even device drivers, and in some cases even the OS
g) Writing anything web-based (applets) requires a third-party plug-in (the Java plugin)

If you are just poking around OpenGL for a hobby, there is nothing wrong with Java

If your trying to do something as intricate as accurately time the frame buffer for a graphics application, your going to get extremely frustrated because there are a lot of things outside of your control that are going to affect that, both from Windows and from Java (namely the Windows scheduler and the Java JIT/VM).

If you are looking for this level of accuracy, it can be done with Windows, but it would probably more easily be done with C/C++ with XWindows on an open source OS (where you can see the OS source code, and potentially even modify it as required, and your application can drop all the way to the assembly level to tightly control tolerances): you can keep the same OpenGL APIs, but you'll lose the commercially stable video device driver (Windows drivers just get more support, and AMD is notoriously poor on Linux drivers, although they do exist but with Windows the OS code is blocked off and you can only really tell what's going on based on documentation or lots and lots of debugging info).

Thanks for the advice.

My attempts at timing when the framebuffer gets grabbed and sent to the monitor were a "wouldn't it be cool if I could do X" thing, not an "I need to do X or the game won't work" thing.  If I could do it but it would take a month, I'd say, forget it, it's not worth anywhere near that amount of time.  Modifying an OS is way behind what I care to learn how to do.

For my purposes, any platform that doesn't support OpenGL 3.2 or later is a non-starter.  I've already ported things back from OpenGL 4.2 to 3.2 (with dynamic tessellation in OpenGL 3.2, even!), but further than that means giving up geometry shaders, which would make life rather difficult.  At the moment, that means Windows, Mac OS X, and Linux, though some Android devices may get there soon.  JOGL should supposedly work with any of those platforms, though I don't know how much debugging it will take.

For the drawbacks, (c) and (g) seem to only apply to web browser plug-ins.  That could be an issue for a browser-based game.  Browser-based means no OpenGL, which makes it useless to me.

For (b) and (d), is Java likely to be horribly problematic for Windows, Mac OS X, or Linux?  Because if it's only wandering off into platforms for embedded devices that I've never heard of where Java falls apart, I don't care about those platforms.  I have the impression that anti-Microsoft Linux fans tend to be pro-Java, which they wouldn't if Java on Linux didn't work, though that impression could be mistaken.  Maybe they're just anti-Visual Studio.

I've already had to deal with situations where my game would run on my desktop but not my laptop, and then both my desktop and laptop but not my parents' computer.  In most of those situations, once I found the problem, the puzzling thing was why it did work on my desktop.  (E.g., if you try to set a four-dimensional vector equal to a three-dimensional vector in GLSL, Radeon HD 4000 series drivers crash the program, while 5000 series drivers simply copy the first three components and ignore the fourth.  There's actually a good case to be made for the former being more desirable behavior.)

For (a), why exactly would this matter?  I know that industry standards are a good thing for a lot of purposes, but I'm not sure why it would be a big deal for a programming language.

I could understand why (f) could be a problem in a lot of situations.  But I really don't want to do a bunch of custom stuff for a bunch of different OSes and hardware configurations.  Having to maintain separate code paths for OpenGL 4.2 and 3.2 is already getting annoying, even though the overwhelming majority of my code neither knows nor cares that I'm using OpenGL, let alone which version.

And then (e) wanders into nuances that I don't really understand.  If I ever finish my game, I'm guessing that it will offer about 60 frames per second performance (it's substantially above that at the moment, but adding characters to the game world will probably bring it down more than remaining performance optimizations that I find later bring it up) on my AMD E-350 based laptop/netbook at medium settings, so it's not like Java won't perform well enough.  A Temash-based tablet would be faster yet.

I'm not trying to argue with you.  I'm just thinking that drawbacks of Java that could be an enormous problem for some people are likely to be minor or irrelevant to me.

  Ridelynn

Elite Member

Joined: 12/19/10
Posts: 3303

1/15/13 9:46:49 PM#27

On a somewhat related note, since your looking for high accuracy. I read someplace that 60Hz is actually broadcast at 60/1.001 fps (or 59.94Hz). If your counting nanoseconds 0.06Hz makes a bit of difference.

  Quizzical

Guide

Joined: 12/11/08
Posts: 13110

 
OP  1/15/13 9:56:44 PM#28
Originally posted by Ridelynn

On a somewhat related note, since your looking for high accuracy. I read someplace that 60Hz is actually broadcast at 60/1.001 fps (or 59.94Hz). If your counting nanoseconds 0.06Hz makes a bit of difference.

For my purposes, if whatever clock is used to determine when a new frame is sent happens to run be 3.29841% faster than the system timer that I can measure with System.nanoTime(), that's fine.  I can measure and compensate for that or any other arbitrary number.  What would break what I'd like to try is if it runs 0.01% faster today, but 0.02% faster tomorrow, or the ratio of the speeds at which the two clocks run otherwise changes.

It's also fine if there's some random variability in how much time a frame takes.  If the time between when frames are grabbed varies uniformly at random over an interval within 1 microsecond of the average, and it's independent for different frames, then that doesn't cause any problems.  Run that over hundreds of thousands of frames and it will mostly cancel out.  The problem is if there's a systematic drift where frames systematically run a little bit faster today than they do tomorrow, or something like that.

Anyway, it's something to try eventually.  And if I can't make it work, oh well.

  Ridelynn

Elite Member

Joined: 12/19/10
Posts: 3303

1/15/13 9:58:55 PM#29

Java will likely work well enough on Windows - since it's the most common desktop OS out there.

On a Mac ... well, Apple used to provide their own VM, they have stopped doing so relatively recently. It's still available via Oracle, just not as part of the standard install, and on it's own distribution schedule (I think they are several versions back).

On Linux... umm, well, everything for linux is hit or miss. With a major distribution (like Ubuntu or Fedora) you will likely have decent support, and you can find source to make your own work on any distribution more than likely - distribution schedules are hit or miss with this as well.

The security vulnerabilities actually affect anything to do with Java. The one I linked to from recently happened to be via a web vector, but the VM itself has had it's own issues with security external to the web applet plugin. Sun used to patch Java very frequently (almost too frequently), Oracle seems to do so with about a quarter of the frequency.

Again, if your just toying around as a hobby - then it works fine, and you recognize all the security issues and aren't planning on running it on any platform out there.

But if you are seriously contemplating releasing it into the wild in some form or fashion (other than just a "Hey download my neat hobby project"), then you may want to consider something more friendly to the end user: preferably something that doesn't require them to download or install any third-party tools in order to enjoy (and particularly a third-party tool that is riddled with security vulnerabilities; I feel the same way about Flash).

The leap between procedural languages is not that difficult - the syntax changes a bit, the IDEs can change a lot, but math and algorithms are universal, and that's the core of any functional program anyway. But if it's just for fun, then hobby away and I'm just ranting.

  Quizzical

Guide

Joined: 12/11/08
Posts: 13110

 
OP  1/15/13 10:26:03 PM#30

Why would Java have security vulnerabilities if you're only using it to run executables manually?  Obviously, if you're giving Windows permission to run malicious code, that will cause problems, but wouldn't that be true of any language?  I guess my question is, if Java is problematic with a standalone game client, then why would some other language be better?  Or would it?

I could understand why web browser plugins (whether Java or Flash or whatever) would be a security risk:  you visit a site thinking you're just going to get text and pictures on a screen and they exploit some security flaw to run malicious executable code on your computer that shouldn't have been able to run without your permission if not for the security flaw.  But I don't see how that could happen with a standalone game client.

  Ridelynn

Elite Member

Joined: 12/19/10
Posts: 3303

1/16/13 9:34:38 AM#31


Originally posted by Quizzical
Why would Java have security vulnerabilities if you're only using it to run executables manually?  Obviously, if you're giving Windows permission to run malicious code, that will cause problems, but wouldn't that be true of any language?  I guess my question is, if Java is problematic with a standalone game client, then why would some other language be better?  Or would it?

I could understand why web browser plugins (whether Java or Flash or whatever) would be a security risk:  you visit a site thinking you're just going to get text and pictures on a screen and they exploit some security flaw to run malicious executable code on your computer that shouldn't have been able to run without your permission if not for the security flaw.  But I don't see how that could happen with a standalone game client.


It's true of all programs to some extent - the user has to trust you/the program well enough to authorize Windows to run it, and once it has authorization from UAC it can pretty well do as it will.

The problem with the Java VM is that it's another layer of crap that can go wrong. A second item that must be maintained, in addition with the host operating system. There is also the fact that Oracle bundles the Java VM in with the browser addon, and it is enabled by default (at least as of now, that may change very soon). So if a user downloads Java to play your game, regardless of if they know it or not, they are getting the browser plug-in as well (until they go in and manually disable it).

I'm sure you aren't out there using Java to program viruses, and your program won't cause other people to get a virus in and of itself. But if you use a native language, you don't have to worry about your users patching 2 sets of software to stay safe, just one.

As a developer, I don't know that I would be that particularly concerned about that particular aspect, because you have no real control over if the user patches their operating system, or Java (although I suspose you could enforce a check before you allow your program to run, but that is extremely rare). You can enforce that your own program is up to date (a call to an update server) - and there could be vulnerabilities in your own code that could be patched up from time to time.

As a developer what I would be most concerned with is the barrier to entry. The user has to go and install this third-party program (Java) in order to use your program. That third-party program is notorious for security breaches (regardless of how often it gets attacked, or how severe they are, the press is out there and perception becomes reality). A lot of people will say "OMG that program is awesome. Wait, I have to get Java? Maybe later..." and you've lost a customer/player/sale/download/whatever metric you are trying to use.

As a hobby or demo, where only you are toying with it, it doesn't matter so much. But if you are trying to put it out into the wild, it's a real and definite consideration I would make. The only real concern I would have with this angle is being denied (more) direct access to the hardware: your insulated via the Java VM, and that adds a bit of overhead. It's still fast, but not as fast or consistent as a native application could be.

2 Pages « 1 2 Search