Show Posts
|
|
Pages: [1]
|
|
1
|
Game Development / Networking & Multiplayer / Re: For my first MMORPG, I'd choose...?
|
on: 2005-11-02 03:09:59
|
|
First of all, guys, thanks for the input.
Secondly, what I'm doing when there's a selection in place is drawImage(..) of a translucent tile (the red-selector tile) for every tile that is "selected", so yes, I'd expect a big difference between the selection-on/off phases.
What's more, when there's no selection, and you don't even move the mouse, I simply do nothing because I only re-draw the background and "trees" where the cursor-tile has previously visited.
Another thing is, if you right-click, the "trees" should disappear and appear again in different locations... this action (even when repeated) shouldn't bring a major FPS change either.
|
|
|
|
|
3
|
Game Development / Networking & Multiplayer / Re: For my first MMORPG, I'd choose...?
|
on: 2005-10-25 04:16:28
|
@princec: Thanks for the advice. I've gone over your list and its more or less what I figured I could do. I plan to use RMI and my crappy graphics and whatever I get from the people helping me. You're also right about the Business v.s. Entertainment (i.e. Commercial Application Products v.s. Games). I code in two "modes" if you will, first I attempt to understand a problem and figure out how to solve it. Later, once I have something working, I optimize, divide into classes, modulerize and whatever...  @Jeff: "Paper Dolls", is what I was thinking about too. My graphic-artist also understand there's a LOT of work to be done for that.  If anyone's interested, I've got a very modest demo of an Isometric Display which I coded after reading and experimenting with lots of Isometric Articles found on this site. I'd appriciate any comments, of course.
|
|
|
|
|
5
|
Game Development / Networking & Multiplayer / Re: For my first MMORPG, I'd choose...?
|
on: 2005-10-22 21:05:15
|
JAW and princec, you're both very right in your advice. However, I'm well aware of the amount of work involved, the commitment to the game and its users that is required from everyone who participates and the problems of hosting and getting people to play the game. About my commitment to this, I can only say that I already proved it to myself that I can write complete, finished, prefect products in the Hightech Industry. Of course we're talking about commercial applications/components and not a game, but I also identify the differences between commercial applications and game-applications. These differences aren't going to be difficult to bridge. I've already had the experience with a n00b, l33t, teen member of my team who's not there anymore and it was a lot uglier than just producing 3 sprites and disappearing, but I can also say princec, that I don't have much choice in this anyway. I can't really draw, and I have to trust that others with more graphic talent than me will be willing to help. About the hosting problem, I've already addressed that and if all goes well, the game(s) will be hosted and produced by a third party who is a silent partner. I cannot, and you don't need me to, say anymore about this issue.  JAW, I'm not going for an RTS. One of the reasons I'm going for a TBS is that I know how difficult it is to synchronize entities between more than 2 clients. Another reason for going TBS is simply cause I don't like Real-Time games so much and prefer TBS RPG's. About the issues of balancing the game and working out stuff like what to do with lvl99 characters, I've got that too under control, although this is much too early to talk about. The thing is, in this thread, I was hoping to get people to tell me what would be their choice if They were making an MMORPG, and especially about their taste in the graphic-engine part. I'm well aware of how difficult it is to make, and how time-consuming and how annoying it can get. I'm also aware that many projects never even get published, or even hosted. And I've read these forum's threads enough to know that a lot of programmers here would advise me not to aim so high. But, I already wrote several graphic demos in ASM. I wrote PacMan on my AtariST and Dragon32 when I was in HS and I wrote professional Client/Server software for the last decade almost. I've been analyzing RPG's (partly to hone my abilities as a DM in pen&paper D&D games, and other systems) and learned a lot about the inner workings of most systems involved in a game including scripting-engines (even wrote some myself). To sum up guys -- don't take it the wrong way cause I don't mean to offend anyone -- my mind's made up and I'm going to push through with this for as far as I can go, I just really wanted to know what would most people prefer to work and play with, 2D top-down, the Isometric view, 3D scenes or even just Text based.
|
|
|
|
|
6
|
Java Game APIs & Engines / Java 2D / Re: Java TileMap game.. example
|
on: 2005-10-21 06:07:03
|
How about something else.. which uses basic java api JFrame or something.. I would like to know .. how to use int array to specify the world map.. and some structure to handle the current visible tiles and how to draw them into JFrame for example.. Check out my silly Iso-Applet Demo and tell me if that's sort of what you're looking for. 
|
|
|
|
|
7
|
Game Development / Networking & Multiplayer / Re: For my first MMORPG, I'd choose...?
|
on: 2005-10-21 00:16:41
|
Thanks for the link, I was just going through that site a coupe of nights ago  I also know what I'll need in graphics, tiles, sprites and effects, so having a graphic artist (or team of artists) is the way I have to go. For purposes of testing my code, I can manage with tiles and sprites found on the Net, so any such links as you've posted would be helpful if they're not already mentioned in these Forums. 
|
|
|
|
|
8
|
Game Development / Networking & Multiplayer / Re: For my first MMORPG, I'd choose...?
|
on: 2005-10-20 06:48:17
|
I'm planning an MMORPG. I have a good story framework, waiting to be filled with Quests and the likes. Seeing however the trends in games these days, everything seems to be 3D and shiny, but honestly, lacking in gameplay options and isn't as fun as could be (IMHO). So, my question is, if You were making an MMO, what would you choose to make it like?
It depends entirely on my coding experience. If I had little to no graphcis experience Id go text. if i had some 2D graphcis expereince, and acess to sufficient 2D art Id go 2D. If I had 3D experience and access to sufficient 3D art, Id go 3D. If I had NO coding expereinbce, and just a "story", Id give up on the diea of MMO and buy Neverwinter Nights and do a module. * Well, I'm an experienced programmer, at least commercially but I have to admit, this is my first attempt at a Java game, although not my first attempt at writing graphics code as I've done that especially with MC68000 ASM. * I can't draw to save my life, so basically I'll need lots of artwork... and I'm currently always on the look-out for good artists who are of course willing to work for the sake of the work itself. * I prefer 2D/Iso since its simpler to work with than 3D, but also since it's much cheaper and produces results that are closer to my taste... (I know, I'm a retro-gamer...)  * I also would like to do the programming myself rather than script something with someone else's engine simply because I'm a DIY kinda guy when it comes to Software.
|
|
|
|
|
10
|
Game Development / Networking & Multiplayer / For my first MMORPG, I'd choose...?
|
on: 2005-10-18 22:56:07
|
|
I'm planning an MMORPG. I have a good story framework, waiting to be filled with Quests and the likes. Seeing however the trends in games these days, everything seems to be 3D and shiny, but honestly, lacking in gameplay options and isn't as fun as could be (IMHO). So, my question is, if You were making an MMO, what would you choose to make it like?
|
|
|
|
|
14
|
Java Game APIs & Engines / Java 2D / Re: very bad fps when drawing large images
|
on: 2005-01-27 17:01:39
|
|
I ran into the same problem. Drawing a background image (800x600 in size) every frame, brought down my FPS rate to about 10FPS and caused 100% CPU consumption.
I switched to drawing just the previous-background of Sprites that moved and things are much better, i.e. over 80FPS and minmal CPU consumption.
|
|
|
|
|
15
|
Java Game APIs & Engines / Java 2D / Re: Performance in 2D Applet.
|
on: 2005-01-27 06:17:13
|
Runned in 50fps on my mac, so no problem here. If you checked it just a while ago, then the problem is fixed  Its just that when you draw an 800x600 image as your background for every frame... you'd get really bad fps rate 
|
|
|
|
|
16
|
Java Game APIs & Engines / Java 2D / Performance in 2D Applet.
|
on: 2005-01-27 00:37:06
|
Hello everyone, I have tried to adapt some of the code I found for 2D Java games to work in an Applet. The results are shown here. However, when I display the FPS counter it shows only about 10 fps and TaskMgr reports I'm using 100% CPU. I'm running the animation loop in its own Thread since this is an Applet, but sleeping for 10ms doesn't help... any ideas? Thanks, Doron Barak
|
|
|
|
|
17
|
Game Development / Networking & Multiplayer / Re: chat prog
|
on: 2004-05-09 02:15:51
|
I'm interested(besides other matters) in making a small little chat application, where if person A starts it up, and person B starts it up, they can both perform chatting operations
this can be very simple with no gui at all, where should i start... Chat programs need a server which they use as a means of a lobby, or a common meeting place where people can locate one-another so they can start chatting. You can use proper IRC servers for this if you like, or setup your own server which will have to be anchored to the Internet -- i.e. have a permanent domain name. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
| import java.awt.*; import java.awt.event.*; import java.applet.*; import java.net.*; import java.io.*; import java.security.*;
final class MySecurityManager extends SecurityManager { public void checkPermission(Permission perm) {}
public void checkPermission(Permission perm, Object context) {} }
public class IrcApplet extends Applet implements Runnable { private Socket s; private BufferedWriter bw; private BufferedReader br; private Thread t; private boolean isStandalone = false; private BorderLayout borderLayout1 = new BorderLayout(); private Panel panel1 = new Panel(); private TextField tfIrcText = new TextField(); private BorderLayout borderLayout2 = new BorderLayout(); private Panel panel2 = new Panel(); private Panel panel3 = new Panel(); private Panel panel4 = new Panel(); private Panel panel5 = new Panel(); private Panel panel6 = new Panel(); private BorderLayout borderLayout3 = new BorderLayout(); private Panel panel7 = new Panel(); private Panel panel8 = new Panel(); private Panel panel9 = new Panel(); private TextArea textArea1 = new TextArea(); private Panel panel10 = new Panel(); private BorderLayout borderLayout4 = new BorderLayout(); private Panel panel11 = new Panel(); private Button btnConnect = new Button(); private BorderLayout borderLayout5 = new BorderLayout(); private Panel panel12 = new Panel(); private Panel panel13 = new Panel(); public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); }
public IrcApplet() { }
public void init() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } }
private void jbInit() throws Exception { this.setLayout(borderLayout1); panel1.setLayout(borderLayout2); tfIrcText.setText(""); tfIrcText.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { tfIrcTextActionPerformed(e); } }); panel6.setLayout(borderLayout3); textArea1.setColumns(80); textArea1.setEditable(false); textArea1.setRows(20); textArea1.setText(""); panel10.setLayout(borderLayout4); btnConnect.setLabel("Connect"); btnConnect.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { btnConnectActionPerformed(e); } }); panel5.setLayout(borderLayout5); this.add(panel1, BorderLayout.NORTH); panel1.add(tfIrcText, BorderLayout.CENTER); panel1.add(panel2, BorderLayout.SOUTH); panel1.add(panel3, BorderLayout.WEST); panel1.add(panel4, BorderLayout.EAST); panel1.add(panel5, BorderLayout.NORTH); panel5.add(panel10, BorderLayout.CENTER); panel10.add(panel11, BorderLayout.WEST); panel11.add(btnConnect, null); panel5.add(panel12, BorderLayout.EAST); panel5.add(panel13, BorderLayout.WEST); this.add(panel6, BorderLayout.CENTER); panel6.add(textArea1, BorderLayout.CENTER); panel6.add(panel7, BorderLayout.SOUTH); panel6.add(panel8, BorderLayout.EAST); panel6.add(panel9, BorderLayout.WEST); }
public String getAppletInfo() { return "Applet Information"; }
public String[][] getParameterInfo() { return null; }
void btnConnectActionPerformed(ActionEvent e) { try { s = new Socket("irc.shadowworld.net", 6667); InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); InputStreamReader isr = new InputStreamReader(is); OutputStreamWriter osw = new OutputStreamWriter(os); bw = new BufferedWriter(osw); br = new BufferedReader(isr); t = new Thread(this); t.start(); processInput("NICK WizKid"); processInput(":WizKid USER WizKid TEST TEST :FirstName LastName"); } catch (Exception ex) { ex.printStackTrace(); } }
public void processInput(String text) { try { bw.write(text); bw.newLine(); bw.flush(); } catch (IOException ex) { ex.printStackTrace(); } }
private void respondToOutput(String value) { if (value.startsWith("PING")) { value = value.replaceFirst("PING", "PONG"); processInput(value); } }
public void addToOutput(String outputString) { textArea1.append(outputString); textArea1.append("\r\n"); }
public void run() { String line = null; while (Thread.currentThread() == t) { try { line = br.readLine(); if (line != null) { addToOutput(line); respondToOutput(line); } else { t = null; } } catch (IOException ex) { ex.printStackTrace(); } } }
void tfIrcTextActionPerformed(ActionEvent e) { processInput(tfIrcText.getText()); tfIrcText.setText(null); } } |
I wrote the above applet, it connects to an IRC server and lets you chat (although very primitively of course) If you're going the IRC way, you'd need to implement some of the IRC guideline as specified in RFC1459 at http://www.cse.ohio-state.edu/cgi-bin/rfc/rfc1459.html for instance. If you're going for a chat applet, you could also use the information here http://forum.java.sun.com/thread.jsp?forum=54&thread=383859 to sign the applet and host it on whatever site you want to. Hope this helps 
|
|
|
|
|
19
|
Java Game APIs & Engines / Java 2D / Re: Avoiding creation of Color object
|
on: 2004-04-27 14:50:00
|
All of you know (or should know ;) ) it's bad to create 20000 objects per second. I think this code is better: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| import java.awt.Color; import java.awt.color.ColorSpace; import java.lang.reflect.*;
public class Colour extends Color { private Field cachedColourValueField;
private void cacheColorField() { try { cachedColourValueField = getClass().getDeclaredField("value"); cachedColourValueField.setAccessible(true); } catch (NoSuchFieldException ex) { } }
public void setRGB(int rgb) { if (cachedColourValueField != null) { try { cachedColourValueField.setInt(this, rgb); } catch (IllegalAccessException ex) { } } }
public Colour(int r, int g, int b) { super(r, g, b); cacheColorField(); }
public Colour(int r, int g, int b, int a) { super(r, g, b, a); cacheColorField(); }
public Colour(int rgb) { super(rgb); cacheColorField(); }
public Colour(int rgba, boolean hasalpha) { super(rgba, hasalpha); cacheColorField(); }
public Colour(float r, float g, float b) { super(r, g, b); cacheColorField(); }
public Colour(float r, float g, float b, float a) { super(r, g, b, a); cacheColorField(); }
public Colour(ColorSpace cspace, float[] components, float alpha) { super(cspace, components, alpha); cacheColorField(); } } |
This is sort of a compromise which keeps the "dirty-work" done in the appropriate class "Colour", letting you have the setRGB(..) method and still claim you're using a proper Color object ;) I would also like to add -- and it may seem evil to some -- that the only time you're actually using a Color object is when you're painting with it, and then, and only then would its RGB value have to be unmutable, isn't that right? :)
|
|
|
|
|
20
|
Java Game APIs & Engines / Java 2D / Re: Avoiding creation of Color object
|
on: 2004-04-27 14:30:15
|
True enough, but any time you do that you're taking the risk the library developer has made assumptions based on their protection of member variables. Using reflection to get at um is just evil tho  Kev It may be evil, but so is hiding stuff you absolutely have to expose cause there's no other way to accomplish a desired functionality. I've had the same problem with some classes in the Delphi Component Libraries once, there was no choice but to subclass and re-expose things that were hidden. Also, it has occured to me that caching the Color object and its "value" Field may speed things up a notch cause you wouldn't be searching for the Field and setting its access flag every time you'd want to change the colour-value!  Another thing, where would Java's Serialization, RMI and plug&play Java-Bean-Box model be without Reflection? 
|
|
|
|
|
21
|
Java Game APIs & Engines / Java 2D / Re: Avoiding creation of Color object
|
on: 2004-04-25 19:30:36
|
But it's not a question of being jitted or not, the operation itself can be much more costly - like, it could take some global lock. No jitting would help that.
Also, believe me, you don't want to change the values of already created Color object. If it was built to be immutable, you don't know what assumptions our implementation makes, you may run into some tricky issues.
I'm not sure, but I don't think that Reflection is built the way you describe it, this probably necessitates a quick look in Sun's sources?  Also, sometimes, there's just no choice, believe me when I say that library-developers don't always come up with the max usage of their libraries. Sometimes, you have to inherit something just to expose parts that have been left private cause that's what your Client actually needs. (Last sentence wasn't from the perspective of a game programmer)
|
|
|
|
|
22
|
Java Game APIs & Engines / Java 2D / Re: Avoiding creation of Color object
|
on: 2004-04-25 03:38:40
|
You should profile it, but using reflection is more than likely going to be slower than just creating the appropriate objects. It really is a inventive/hideous thing to do though.  Kev Profiling ANYTHING you create is a good idea before production stage, but even though Reflection has a bad name for being "slow" it still may surprise you. Consider what would happen if a method using Reflection is JITed, wouldn't that provide almost the same speed as "natively" performing the same action through non-Reflection code?
|
|
|
|
|
23
|
Java Game APIs & Engines / Java 2D / Re: Avoiding creation of Color object
|
on: 2004-04-21 15:16:41
|
Try the following code: 1 2 3 4 5 6 7 8 9 10 11 12 13
| import java.lang.reflect.*;
public static void setColor(Color colour, int rgb) { try { Field f = colour.getClass().getDeclaredField("value"); f.setAccessible(true); f.setInt(colour, rgb); } catch (IllegalAccessException ex) { } catch (IllegalArgumentException ex) { } catch (SecurityException ex) { } catch (NoSuchFieldException ex) { } } |
Since it uses Reflection, you may have to sign your Applet, not sure... Better yet, would be to cache the Color object, and the "value" declared field, then all you need to do is change the value of the cached field and re-use the color object. Hope this helps, Doron
|
|
|
|
|
|
Add your game by posting it in the WIP section,
or publish it in Showcase.
The first screenshot will be displayed as a thumbnail.
|
|