Jump to content
  • Advertisement

Thygrrr

Member
  • Content Count

    835
  • Joined

  • Last visited

Everything posted by Thygrrr

  1. Thygrrr

    Introduce yourself

    Yeah, if we could take Lumbergh over PHB anytime, that'd be great.
  2. Thygrrr

    Introduce yourself

    Hi, I'm Thygrrr!   Yeah... I've been lurking for "a while".   About 9 years ago I proudly posted somewhere in the lounge that I am now finally a part of the industry (graduating from hobbyist).   I've always had a knack for leading teams both technically and creatively, and thus held the position of CTO at a major german independent studio for almost 4 years now and I'm still going strong. I regularly check GD.net, especially since the recent influx of fresh, premium quality articles. I'm glad it's not exclusive content (that's such an outdated concept...), but nonetheless I read most of it on GD.net first. Old habits never die.    While it's fun to see the same questions be asked and aswered in pretty much any game dev forum all these years, I have to say these are interesting times, with the massive creativity explosion and technology advances across the board.   So, hello world.
  3. Thygrrr

    iPhone Quads Edges ZFight

    I believe what happens is that you have subpixel rendering turned on (it is by default, and it's a good thing), so when you scroll your images, parts of neighboring pixels "outside" your intended texture coordinates are filtered into the fragments of the quads. This is not visible when you use the same tiles, but it is when you use different tiles. Two solutions: a) turn off subpixel rendering (bad idea, depending on how your game works), or b) make sure your textures have a sufficient border (for scrolling purposes of unscaled textures, a single pixel border outside the actual texture coordinates of the quad will suffice). Note that the border needs to be as inoccuous as possible, and fit all the textures. If you just copy the last row or line of pixels, you may end up with a strange "watery ripples" effect instead.
  4. Thygrrr

    [java] What to download?

    Simply go to www.netbeans.org, get Netbeans with mobility option. Go to java.sun.com an get the current JDK. Then, get a WTK (SDK), preferrably from the manufacturer of your handset. e.g. from developer.sonyericsson.com , forum.nokia.com, developer.samsungmobile.com, or motodev.com ... this is only moderately necessary, you could also work with the standard WTK from Sun. Add the WTK as a platform to netbeans in the "Manage Emulators" and "Manage Configurations" dialogs. Then, creating a simple hello world midlet in Netbeans is just a few clicks of your mouse away. The Propel should allow you to install the applications via bluetooth.
  5. Usually, when a J2ME game is slow, the programmer didn't do it right. Especially when it's during one of your early tests. Yes, some phones like the RAZR V3 lack processing power; it's still more than enough to male a 2D car racing/stunt game with vectorized collision volumes for sprite objects and keeping the drawable elements in a quadtree. Of course, in K800 type phones, I was able to use several additional layers for shadows, street markings, skid marks, and parallax effects. Game runs at around 50 fps there.
  6. Developing Symbian apps is immensely painful. Don't do it. There are also at least 10x as many phones out there that support JavaME compared to those that run Symbian. Additionally, almost all Symbian phones have somewhat decent JavaME support. That said, JavaME is clearly inferior in capabilities; but Symbian isn't that much better - mostly because the APIs and conventions are so fracked up. The best platforms are actually the iPhone and Android, with only the former being a significant market. 4% of Java Phone owners download games. Many don't download again, ever. Probably the same is true for Symbian owners. 30% of iPhone owners download games. iPhone, while making up only a tiny percentage (~2%) of the handset base on the western market, accounts for 18% of all mobile game sales. So, if you're alone or a very small team, and planning to make money, go iPhone. If you're part of a company with resources, go Java and iPhone. If you're just dabbling around with your personal phone, use whatever it runs. That said, I earn a living making JavaME games. I love my job, despite (or maybe even because) of the platform's shortcomings. However, I am avidly looking forward to Android (which is also Java, but not JavaME).
  7. Stack traces on devices would be a great thing to have, assuming they don't require too many changes to the source code per se. It's not THAT important in our everyday development work, but during porting, pretty much every project hits one or two devices where a stack trace would really speed up the debugging process. None of these "troublemakers" is suited for on-device debugging, which makes it moot (and we don't use it for SonyEricsson phones, for instance, because we rarely run into "mysterious" bugs on those, and because debugging in the emulator is just so much easier). We employ a few cludges, even displaying line numbers in the code, but nothing as good as a genuine stack trace. That said, I'd be very interested in your project, and maybe we can exchange some experience about things we tried in the past, etc.
  8. Quote:Original post by Shakedown With Java, yes. With javascript, no. Seconded. javascript doesn't have much to do with Java in the first place, anyway. In Java, it is very feasible. I've successfully done it a few times, and am currently doing it again, in my everyday job as a mobile games developer. And that's not even JavaSE, but JavaME...
  9. I've been making Java games on cell phones for a living in the past 5 years now. Java games for phones come in three flavors. First, there's J2ME (recently dubbed JavaME), which is the most prominent type; however, its 2D capabilities are very poor and its 3D APIs are either very akward (JSR-184 Mobile Java3D) or not widely supported (OpenGL ES). Another flavor is DoJa (Docomo Java), which is (still?) popular in Asia, and I can't really tell you much about it. The third "purely mobile" Java flavor is Android, which basically tramples over J2ME in the graphics department; and the APIs are much more solid and thought out from the looks of them (just getting started myself, most of my experience and everyday work involves J2ME). Alternatively, you can also use JavaSE on a range of smart phones, usually those that support CDC. My personal recommendation would be to try out Android, unless you're aiming to make money immediately, which means you're pretty much stuck with J2ME. There you'll have to work with limiting, crippled, or poorly designed APIs, even poorer implementations, and don't even get me started about sound. (Yes, I'm a bit bitter, but things are looking up since the advent of Android; and J2ME is still a fun platform - it's just ridiculously limited and FUBAR in many aspects. It still remains the prevalent platform for now, however.)
  10. Thygrrr

    Two points and a point inside

    Quote:Original post by cordel I've read it. You mean maybe to substract each two dots (x1 and x2 ,y1 and y2) and somehow comapare it with (a,b) ? No, that wouldn't work. Just check whether x1 <= a <= x2 and y1 <= b <= y2 (after making sure x1 <= x2 and y1 <= y2 by swapping the coordinates around accordingly if necessary).
  11. Quote:Original post by ahung89 Thanks guys. I bought Killer Game Programming. Haven't started it yet - I need to learn about threads before doing so. The Sun tutorial is confusing as hell. Threads are confusing as hell. This is a friendly warning: Half-baked knowledge in this area is very, very dangerous. When using threads, you are guaranteed run into more problems than you solve, causing you frustration and confusion. It is also a common misconception that you need threads to make multiple things in a game happen 'simultaneously'. In fact, the contrary is true. You don't need in-depth knowledge of multithreading if you want to develop a decent game - even a complex one. A solid game design usually has all the relevant code happening in a single thread, which runs some kind of 'main loop', processing input first, then appliyng the game logic, and finally painting the game screen. If your graphics API of choice requires you to process your screen drawing in another thread than the main application loop (actually kind of common in Java), try to make the best of it and synchronize your paint routine and main game loop (look up Java keyword 'synchronized' once you encounter problems there). [Edited by - Thygrrr on January 7, 2009 4:30:23 AM]
  12. Thygrrr

    is this doable?

    It is NOT possible using standard WMA (JSR 120 & 205) for JavaME, unless you are dealing with special text messages on special ports (not the kind normal users send, those are restricted - you can send them using WMA, but cannot receive them in JavaME MIDlets to process them in any way). I understand you want a web interface for your SMS inbox. This is not doable in normal JavaME - however, some vendors or operators may provide special APIs for such a task, but you usually have to get your code signed in the vendor or operator domains, something which is all but impossible for mortals (and most gods, as well - a completely FUBAR process). You cannot self-sign your code, even if it's your own handset. The best bet might be device-bound developer certificates from Motorola, which are difficult to obtain, as well. I'm not certain whether their Messaging APIs support processing standard SMS. Another specific set of APIs might be the O2 UK set of core network APIs, which is handled a tad less restrictively. IMHO this is one of the massive design roadblocks everyone involved in J2ME seemed all too eager to put in.
  13. You should Google "Yacc" and "Flex" :) Unless you're trying to make this a rather tedious learning excercise (learning is good, but so is knowing how to make compilers using Yacc).
  14. Thygrrr

    Using Eclipse with j2me

    This is incorrect, plain java will probably not work. JavaME projects often use strange configurations and/or some kind of funky source code preprocessor (that's right!). At the very least, you need Ant to build and package the binaries so you can run them in the emulator. Get EclipseME (and an appropriate version of Eclipse); you should be able to open the files just fine. You may have to copy the project directory into your workspace directory; but I'm sure your friend can help you with those details). If everything else fails, just ask him to send you a copy of his entire Eclipse directory, including the workspace. http://eclipseme.org/
  15. Hello. I'm working on a game that uses a simple physics engine to simulate the movement of some (spherical, later maybe rectangular) 2D objects "inside" the screen, using an accelerometer to make them tumble about the (smallish, 240x320) screen. I need to use fixed point maths only (one potential culprit is my newtonian iteration function for the square root, but it seemed sufficiently robust so far). There are to be anywhere between 1 and 20 Objects of identical mass and size on the screen. "Gravity" is determined by the XYZ-accelerometer input, plus some special "toss" impulse changes that occur when a short peak input comes from the accelerometers. Here's what I have so far: I use an Euler integration method, but I'm tentatively looking into better ones. The problem is, my target platform has a very limited processing power and memory. Maybe you can suggest one? Object-to-wall collisions are simple, I just clip whatever coordinate exceeds the maximum, reverse the velocity, lock the object's degree of freedom for the frame, and reduce the speed a little to emulate a semi-elastic collision. Because I want something to graphically happen to the object in that instant, showing it exactly at the point of collision for one frame is an added benefit of my method. For object-object-collisions, I use simple "Pool Ball" physics to calculate the changes in direction when they collide, by determining the impact normal, separating the objects along this normal, projecting the impact velocity onto it, calculate the impulse and determining the result to the velocity vectors of the objects. It's a fully elastic collision. This seems to work fine, and is rather convincing. However, it gets tough once degrees of freedom are lost (at the edge of the screen). My objects keep accelerating too long per frame (20 to 100 milliseconds), meaning they penetrate too deeply - and worse: their velocities do not converge at 0. Thus, the objects never really come to rest on top of each other. Instead, they chaotically jumble around in the corner. Now, I guess one step in the right direction would be to determine the precise point of impact for the objects. Currently, I just separate them if I detect an overlap (objects passing through each other at high velocities aren't an issue, as this is not noticeable on the tiny screen). However, there could be multiple impacts every frame. Acceleration data from the accelerometers would need to be broken up and integrated over small "fragments" of the time slice. Remaining degrees of freedom need to be propagated through chaotic stacks of potentially dozens of objects. I have no idea how to do that in a simple fashion. It's frustrating, because it seems like such a simple thing to do, but I just can't sort it out. In my search for a simple solution, I wrote a little hack that simulates a partially elastic collision (as opposed to a fully elastic "pool ball" collision) in case one of the objects hits another one that is currently touching a wall. This helps as long as the acceleration forces are sufficiently (read: quite) low. [Edited by - Thygrrr on August 9, 2008 7:11:52 PM]
  16. Quote:I'm not sure what you're talking about here. Building the contact graph? Easy to do in-place; just put the required bookkeeping fields in the rigid body class. Maybe I don't get it at all, then. Their circular dominoes example completely confuses me, to be honest. I'll go back to studying the paper... If I keep an array or Vector with all the potential edges to other bodies in each body... is that what you mean by "bookkeeping fields"?
  17. Really? It always felt fishy to me when I did that. Anyway :-) I took some of the ideas they used in the paper. And I realized that somehow, I broke my collision response code way back. Complete and utter bollocks, and whatever I did to it, I couldn't find out what went wrong. I reimplemented collisions with support for a coefficient of restitution, and that alone fixed a crapload of problems (at least at high frame rates). Seriously, I wonder why my previous code did work convincingly at one point - it was (nearly) complete bollocks. This new code I built from scratch using some formulae from an old physics book even uses one square root less, and supports restitution coefficients, which I really needed. For my prototype app, this will do; and I'll work on using their shock propagation ideas that cover the "rattling down" of items to zero speed/zero restitution. Combined with my degree of freedom system (and some minor extensions), I think I will now be able to reliably ignore acceleration for objects lying on top of other objects that are already restricted in one or two degrees of freedom. There is probably no way I can build an arbitrary graph and perform some magick on it, though. Maybe if I pre-allocate some kind of buffer to do it in; however, this is Java, so my possibilities there are limited. Instantiating arbitrary amounts of new objects will open a huge can of worms later when porting this to memory constrained low-end devices. Also, I find their description of the algorithm extremely vague; and maybe I missed it, but what kind of integrator are they using? An RK method?
  18. I actually came across this paper on my searches on the topic before. I dismissed it, because my objects are convex. I will take a look at it, though, thanks! One thing I didn't mention yet - my physics solver is for a 2D world. (though that doesn't really matter as much; but when cross products and other things are involved, adapting a 3D method to 2D may not be trivial anymore). I added it to the thread topic for good measure.
  19. Thygrrr

    [java] j2me

    Use getGraphics() only once! Otherwise, it will allocate a new graphics context every time the main loop executes (that means the loop in your run() method). Also, add a Thread.yield() at the end of the main loop to make the app more responsive. I am not sure, but you have a "start()" method in your canvas. This method is NOT called in the code snippet you gave. Call this start() method in your MIDlet's startApp() method. Also make sure you instantiate a Canvas object in the startApp() method, and set it as the current Displayable ... something along the lines of Display.getDisplay(mymidletinstance).setCurrent(mycanvasinstance) Otherwise, what will happen is, you image is not loaded, and you will be causing NullPointerExceptions before flushGraphics() will be called, meaning in your case that the thread will die before the screen is updated. Quote:Original post by ssjx Also i notice the slash in front of the file name, should it be there? Yes, it's most likely correct, assuming the image is inside the root of the JAR file.
  20. Thygrrr

    [java] J2ME

    Actually, you should use "/HAND.png" or any subdirectory you put it into, like "/res/HAND.png" "./HAND.png" will try to get it from within the current package, which is rarely where people put their resources by default.
  21. Thygrrr

    Nintendo DS Questions

    1. No. There is, however, a "pseudo OpenGL" API included in libnds, which is like a really small subset of OpenGL with a lot of functionality changed or removed. It sucks balls, though it's still better than nothing - think of the mini GL drivers of the 1990's, only with even fewer working features. 2. No. 3. Yes. Several. Your mileage may vary.
  22. Thygrrr

    Multiplayer cell phone game?

    The only "viable" platforms at the moment are Symbian (extremely hard to start with), or JavaME (fairly easy to start with, widespread), Windows Mobile (fairly easy to start with), and Linux (quite difficult as well, as only very few handsets run Linux). To get started with Java ME, get Netbeans Mobility from www.netbeans.org, and visit http://java.sun.com/javame/ to get acquantied with Java ME. Windows Mobile apps can be made using some flavors of Visual Studio, http://visualstudio.com Your possibilities for multi player games depend on the technology you have at your disposal: Bluetooth: Phones that feature the right APIs can interface via Bluetooth. In Java ME, look for JSR-82. Latencies and connection stability may vary, but it is de facto the best way - if you manage to establish a connection at all in the first place. IrDA Infrared: Imagine Bluetooth, only much, much worse connection quality and stability. Slower, and higher latencies. Can't really hold or move the phone while playing. TCP/UDP: There are libraries for online play, or you could write your own. Latencies are going to be very, very high; unless the phone uses a WiFi connection. This functionality will be available on most phones. It may require a server to relay the data. Hotseat: Well, of course. Split Screen: Painful to play, but possibly doable for something as simple as Pong(tm). Play by Mail/SMS: Possible on phones that allow you to either access the Wireless Messaging API, or you could write your own mail client.
  23. Thygrrr

    some good ole' advice

    That is a CDMA handset (Verizon?), and fairly low-end, judging by the specs. I'm uncertain whether it supports custom software at all, other than Flash Lite wallpapers. (you could look into Flash Lite, but don't expect too much). Since it's a CDMA handset, it possibly runs BREW applications (Qualcomm's binary runtime environment for wireless devices using their chipsets). However, it seems that Verizon has their platform completely locked down. This is what I found skipping through the net looking for clues about your handset: Quote: Verizon does not allow any application to be installed by the end-user. They restrict code/application execution to apps that have been coded and signed in their proprietary BREW language. See http://brew.qualcomm.com/brew/en/developer/brew_gaming/ whether you might get started... BREW has some SMS capabilities, at least, and maybe you can get a developer certificate, or your phone is not a locked down/crippled Verizon product. Your mileage may vary.
  24. Thygrrr

    some good ole' advice

    For your app's technology, look into Push Registry and JSR 205 (Wireless Messaging API 2.0). It doesn't work flawlessly on all phones, because on some it is not available or not properly implemented, or may require code signing to send or handle messages, and maybe you cannot handle messages directed at your inbox (non-user header SMS). YMMV. http://developers.sun.com/mobility/midp/articles/pushreg/ http://developers.sun.com/mobility/midp/articles/wma2/ To get started making MIDlets (Mobile Java applications) the easy way, get Netbeans 6.1 with Mobility extensions, and a vendor SDK or WTK (Wireless Toolkit), for example SonyEricsson's one, if you want to develop for SE phones. http://netbeans.org http://forum.nokia.com http://developer.sonyericsson.com http://developer.samsungmobile.com http://developer.motorola.com/ Alternatively, if you have a Symbian (or S60, Series80, or UIQ) phone, you can write a Symbian app. That may or may not require code signing, as well. [Edited by - Thygrrr on July 17, 2008 7:36:00 AM]
  25. Thygrrr

    J2ME or BREW?

    Modern J2ME phones (started with the Samsung D500 almost two years ago!) have Hotspot Implementations, i.e. Just-in-Time compilers for their Java VMs. They have weaknesses, such as no good and native frame buffer access or anything, but in the end, J2ME outperforms BREW in many ways, especially ease of development and platform support in non-US markets.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!