Go on, ask me anything.

no you didn’t. I meant this is my second session on asking you :slight_smile:

  1. because yesterday I can’t play any level (even lv1) of Titan Attack.
  2. I meant to treat it as object, pass it from one class to another class. I have a class that will load texture and give it to each entities so I dont need to load same texture for different entities. Honestly I’m little confused on how do rendering in LWJGL based style, should I draw everthing on game main class or what? :frowning:
  3. thanks for the info.
  4. those’re cool :smiley:

There’s a random flag also set at install time, which says “cripple the game completely when the demo times out”. 50% of people get this. The rest will be allowed to play 1 game before the game exits (basically annoying). I haven’t checked the stats lately to see which sells better at the moment, it’s probably changed over the years as people’s expectations drift due to web competition and so on.

I’d say an Image is a client (system RAM) side representation of a bunch of pixels in a particular format. You upload Images to GL via glTexture2D (for example), at which point you get a handle to a GL texture which refers to something that can be represented serverside (the graphics card). I’d say a Texture was the object that wrapped this handle. Once the image is uploaded to GL you probably have no further use for it and it can be discarded and garbage collected.

Cas :slight_smile:

Are you related to Severus Snape, the Half-Blood Prince?
8)

Have you met any other JGO members personally? If JGO was your first interaction with them, how did it go (generally, don’t need to point fingers of awkwardness)?

Sadly no. I could do with some magic powers.

Cas :slight_smile:

I’m never awkward in any social situation :slight_smile: Very gregarious, me. I’ve met Kev Glass, Jeremy Booth, Adam Martin, Elias Naur and the other oddlabsers (who I don’t think hang out here). I do like people coming to visit, especially if they’re unaware of what the local cider is like and I can inflict total brain death upon them.

Cas :slight_smile:

I doubt that’s how it actually happened, since OS X doesn’t arbitrarily decide to format unrecognized media.

Of course I like Macs. OS X is the most usable OS I’ve ever tried… In it’s day Amiga OS was clearly a least a decade ahead of the competition, OS X is the closest thing I can find these days.

It may depend on context. Pixel-perfect 2D collisions were handled in hardware in the past, that’s true. I suppose it would be possible to do them in hardware with todays graphics chips as well.

But I have to say I suspect I would prefer it. I basically stopped playing first-person shooters because the network lag and rendering meant that what should have been a near miss according to the local rendering was often counted as a hit by the server and so I felt the game was ripping me off. E.g. locally: duck out from behind a wall and take a shot and duck back in. Server’s version: shoot a rocket into a wall directly in front of you and kill yourself. I.e. Not Fun.
So I’m not a fan of a near miss counting - when my player is the thing that should have been missed :slight_smile:

NextSTEP and the kernel are independent things. NextSTEP was the set of Objective-C based APIs - which are cool, despite how much I can’t get used to Objective-C syntax.

The Mach Kernel influenced a lot of other OS kernels… including Windows NT and it’s successors

NextSTEP is old tech, but sadly still the most advanced stuff around as far as OS APIs go. Everyone else is stuck on lame C interfaces and no good object oriented APIs to the OS at all. Linux is stuck in the 70’s insisting that nothing comes after C. Coding kernel level stuff in C++ is next to impossible on Linux as far as I know, yet it is basically the norm on Window -even though MS is brain dead and still doesn’t officially support it… Heck they still don’t support kernel development with their own primary development environment, Visual Studio.

Since I can find something to hate about most OS’s I’ll answer too :slight_smile: … and I’ve always wanted to write my own… but…

Time & Money

Think of the device drivers required just to get a basic system going…
Somebody should make a very high-level language for device drivers and then a compiler that did the right thing for each OS… there’s a project for ya!

Hmm I know! How about an OS that’s basically a JVM on top of a microkernel :slight_smile: Then devices can actually supply their own drivers when plugged in, in the form of bytecode.
It’d all be possible using the realtime Java APIs and some APIs for segregating VMs and memory spaces. And structs!

Just think about the possibilities… all the toolchain already sorted out (yay Eclipse/netbeans etc!)… one day maybe…

Cas :slight_smile:

Yeah, I’ve thought about a Java-centric OS as well. It would be cool… but definitely would need real-time extensions to Java… responding to interrupts and then doing a stop-the-world GC in the middle of one would be, shall we say, “interesting”?

I had heard that one of the original proposals for PCI devices was that they contain rudimentary drivers in a on-board ROM as Forth code that would provide BIOS-like access to the device so it would be usable on it’s own… high performance drivers tailored for the OS would be loaded later as needed. Not sure if that was for real or not… but it is an interesting concept.

Imagine:

  1. a LLVM like system in Java
  2. Java runtime written in Java (like extended version of Jikes RVM)
  3. a java interpretor written in java
  4. microkernel based arch (again in Java)

Porting to a new range of hardware requires adding CPU description data in the LLVM like system & kernel. You run an exisiting version, which cross compiles a sub-set of the Java runtime, kernel and all of the interpretor to lowest supported processor and saves off the execuatable. (The runtime needs to be able to cache precompiled code) The system gets copied to the new target, which boots, no full cached runtime, uses interpretor to construct cached binaries of 1,2,4 for the “exact” hardware which it is on. (Of course all of this could be pre-compiled, but this is cooler as well as smaller). Restarts itself. Thus the only portion of the system that cares about the hardware are descriptors in the compiler and kernel frameworks. Yeah, yeah, there lots of gaps in this “fantasy”, but what the heck.

Cas,

I know you had mentioned previously about java applets and 60mbs not mixing, so that’s why you just stick with the way you do things.

However,

  1. What are you general views of applets in general(specifically for java)? Perhaps a direct competitor to Flash games(max size 3-15mb)?

  2. Do you think that overly simplified 5 minute games help,destroy, or simply diversify online ‘casual’ gaming?

  3. Do you think it would help Java’s Gaming Exposure(spark additional life) if we had a site(better then whats out there right now for java) and more games, that compete directly with flash games. Ones that work decently well on all systems, load fast, and offer similar gameplay but with the added benefits of using Java (over flash’s performance and other limitations)

Hi Cas, the stupid answers you got to that bug request about struts are really sad.

Did you ever get any new info about that? other than what is in the bug report?

Did you ever try the javolution structs? are they useful or just too much overhead?

  1. Hm, broken for too long, I fear. And still nowhere as good as Flash. I can’t quite figure out how you can just whack a Flash applet into a page and it’s just… there. As fast as the jpegs load. Why can’t Java do that? And half the time they break. Literally. Stacktrace in a console. Not good enough. And Apple broke all the good ones completely.
  2. No real idea. Games are games.
  3. No. That ship has sailed. It sailed maybe three times - Flash, then Silverlight, then Unity. Now Flash is probably going to get 3D rendering too and it’s already pretty fast. Java was asleep blissfully counting coffee beans with a dummy in its mouth every single time thanks to stunningly poor management and leadership. Java might fix all this stuff - we got a long way to it with the LWJGL applet loader and some smarty pants javascript to wallpaper over the many cracks - but it’s too late for anyone else to give a damn.

Cas :slight_smile:

Nope, it just got filed in a dusty cupboard somewhere at Sun and forgotten. Considering how crucial it is to compete with C on performance for critical I/O tasks it’s pretty odd that it hasn’t been championed a little more.

Javalution structs are almost but not quite entirely not the solution at all :slight_smile: They might superficially make it look a smidgen easier to do but they’re just as slow as what we have now if not slower and pretty ugly compared to the proposed neato mapped bytebuffer solutions.

Cas :slight_smile:

What we need to do is extend ByteBuffer with getObject(x), putObject(x) methods. They would be defined to fill in the public fields of Object x from the buffer, in the order they are declared (is that order info preserved?). Only primitive fields would be allowed or there would be a runtime exception or undefined behaviour. We can do that all with pure Java. Then once everyone clues in to how useful this is, convince someone to make it an intrinsic operation for HotSpot. ;D

I did that:
http://www.java-gaming.org/index.php/topic,18852.0.html
and everybody was like… “what?” ::slight_smile:

sigh… :-\