Sunday, February 3, 2013

CrossDoom

What is CrossDoom? xDoom will be an on-line FPS game written in java where people can participate and make maps or help with the coding of the game!

Here's the current (alpha) version:
https://dl.dropboxusercontent.com/u/16387578/xdoom/xDoomLauncher.jar

How to code?
Well, you have to know Java or some equivalent language to extrapolate from (C++, for example). Here's the official link for the Sun Oracle's tutorials page:
http://docs.oracle.com/javase/tutorial/java/index.html

You will also need to know OpenGL to understand how the game is drawing stuff on the screen. You can check out the legacy tutorials here:
http://nehe.gamedev.net/
I'm using the LWJGL libraries (the same libs Minecraft uses) to adapt OpenGL to Java, so you can check out:
http://lwjgl.org/wiki/index.php?title=Main_Page#Getting_started
With all of this information, you should be able not only to understand the code, but to make it better! Any questions you have, Google.com has always helped me, alongside with StackOverflow.com =)

How to make a map?
*later*

To Do List:
CRITICAL:
- fix server crash on blocked connection attempts
ESSENTIAL:
- add loading screen
- add player animations
- add weapon animations
- add crouching / proning
- map editor
- start connections from the client, to bypass firewall and NAT
SEMI-ESSENTIAL:
- add online game modes (CTF, DM, Conquest, Hidden, TTT, DE, Zombie VS, Zombie Survival)
- add keybinding options
- add graphic options
- tweak sounds
- Add triangle and polygon possibilites to map creation
- Add personalized shapes to map creation (eg: stairs, cubes, windows)
- add "key binding" and "settings" tabs for launcher
- fix pause menu bug
- chat commands
OTHER:
- theater mode
- improve "duplicate bullet fix algorythm"
- make bullets come out of weapon
- add a decent game menu
- enable OS X / Linux portability

24/01/2014
v0.10
Clean-up on test code. Also entered Viope's World Championship for Game Development.



18/10/2013
Character leg animation complete for sprinting. "Animation priority" and "Stationary sprint" bugs fixed. Glitchy models fixed and animation procedure improved.

17/10/2013
Character's legs built.

06/10/2013
Implemented chat system.

20/09/2013
 Fixed random computer TCP thread closing bug (we hope!).

08/09/2013
Created and painted our first weapon from scratch!

04/09/2013
Started painting our character model.

31/08/2013
Animations enabled across the server for each individual player (meaning: you can now see other people moving). Attempted a fix at animation speed variation but the model went crazy, so it's still not implemented.

30/08/2013
Changed the current walking animation to a sprint animation and added a better walking animation. Also shifted some stats to the player class, for enemy's animations. Enabled structure for height displacement according to leg angles and for angle information to be sent with the player position packets (meaning your each player's computer needs only to calculate it's own animation).

26/08/2013
Added a human with running animation (still looks retarded, tho :P)

20/08/2013
Started work on programable animation. Added joints on shoulders and hips. Added animation for running (on those joints).

19/08/2013
Fixed recoil bug with low FPS.

17/08/2013
Title changes accordingly to what's being loaded. Also the game exits if it crashes in some model.

16/08/2013
v0.9
Weapon models now show on your character and other player's characters. They turn accordingly, while character models no longer do so.

14/08/2013
Improved the .TGA parser. However, reading .TGA still bugs out, not sure why... Added M4A1, shotgun and revolver weapon models (they need to be textured though).

13/08/2013
Fixed model rotation. Also added vector scaling on models. Added a .TGA parser (it's glitchy though).

11/08/2013
Welcomed Nennas to the team! Fixed bullet height bug. Semi-fix to model rotation bug.

09/08/2013
Rendering for OBJ fully fixed. Changed the player height architecture, which was necessary for Crouching and Proning. Players are no longer represented as Cubes, but as a standing MuscleGuy.

08/08/2013
Major work done in character models. Parser created for OBJ files (could be used for weapons, for example). OBJ Rendering also worked on, still buggy.

17/07/2013
Started work on a map editor and research on character models. Also started recruiting a team.

03/07/2013
Timer resolution bug fixed.

02/07/2013
v0.8
Bullet damage bug fixed. Flying dead bug fixed. PvP enabled.

31/06/2013
Added ALIVE TCP packets. Improved reloading algorythm (and fixed reloading bug). Also now you can change weapon when reloading and it will interrupt the reload.

30/06/2013
Duplicate bullets bug fix (not an elegant solution, should be improved). Added DAMAGE and DEAD TCP packets.

29/06/2013
"TCP Sender Thread not closing" bug fixed. Joined ID and IP into player's atributes in server to simplify things. Code clean up. Moved bullet/player collision to the server processing (prevents cheating and takes some load from the client).

28/06/2013
v0.7
Fixed missing bullets bug. Added sounds for other player's bullets.

27/06/2013
Fixed "invisible players" bug. Improvements on sleeping/awaken threads.

26/06/2013
Fixed .jar download for Linux systems and .jar execute commands (the " symbol was affecting the process execute, for some reason...). Threads mostly finished in both client and server. Bullets now run in TCP. Fixed launcher map/server lists bug.

22/06/2013
Moved classes around and created a package for entities (bullets, players, map pieces, etc). Major work done on TCP and UDP threading. Client side almost complete, server side needs to be improved. Memory leak fixed.

21/06/2013
Improved server/client communication. When joining a server, you will now establish a TCP connection and download the current map. Started work on TCP threads for vital information.

20/06/2013
v0.6.2
Further work done on Linux portability (you can now run the game in Linux). Still some issues however, in-game. LF Linux developer! Major improvements on Launcher. Now downloads libs for Linux, Mac or Windows, depending on what OS you are. Map lists available for your server, server lists available to connect to. Map list updated automatically after map download (no need to close/open the Launcher). You can now get server information (name, map, type, ping, players).

16/Jun/2013
Started work on OS X/Linux portability.

15/Jun/2013
Improved bullet collision detection system. Added new functionalities to the Launcher (server list, favourites, etc)

14/Jun/2013
Version 0.6.1
Added a proper launcher. It checks updates by itself, downloads all the game files needed and has a nice simple UI to run a Server, connect to one or play offline.

13/Jun/2013
Version 0.6
Bullets now in online mode. Added a Server.jar and a bat to run it. Made xDoom download itself from my DropBox folder. Now, for each update, you only have to download a 2mb file and everything else should download itself properly (if needed). Added synchroning on various threads that affect bullet/player lists. Crash fix on bullets in online mode.

12/Jun/2013
Added a Rendered Class to keep render methods out of our main class. Also changed the addBulletHole function to the Bullet class. Overall clean-up of code. Started work on bullets in online mode.

11/Jun/2013
Added server/client communication, enabled online mode. Fixed "corner jumping" bug. Improved PlayerPositionValidation algorythm.

*classes*

19/Feb/2013
Version 0.5.1
Bullet holes are now transparent. Improved bullet collision system.

18/Feb/2013
Version 0.5
Bullet holes now rotate according to what they hit. Fixed collision detection with ramps. In-game menu added. Sky improved.

17/Feb/2013
Vertical shooting bug fixed. Also improved bullet pathfinding system (now their travel vector is calculated only once). Draw ranged fixed.

16/Feb/2013
Sky added. Bug fixed with non-textured sphere drawing.

15/Feb/2013
Version 0.4.2
Cross hair now changes while firing. Recoil added. Bullets now have a random direction inside the cross hair. Mouse wheel scrolls through weapons. Added an M4 and a 12Gauge. Also added a WeaponClass and some new stats for weapons (type, name, recoil, accuracy, etc).

14/Feb/2013
Version 0.4.1
Added the Delta value to the necessary calculations so the game is the same speed even if you play it at 30fps (there's something missing though, at 10 fps you cant climb ramps...)

13/Feb/2013
Added a getDelta() function, to be added to most calculations so slow computers still run at the same speed

12/Feb/2013
Version 0.4
Added way to check if objects are colliding (namely, bullets). Lighting bug fixed (unsure how...) and bullet's pathfinding improved. Circles added as possible shapes. Firing and reloading now have sounds. Reloading tweaked and added with 'R'.

11/Feb/2013
Lighting bug fixed. HP, weapons and ammo added. Bullets added. Started work on the 3D plane/bullet intersection algorythm.

10/Feb/2013
Cross hair showing. Methods to switch between 2D and 3D stuff added. Method to initialize fonts added. Added player info (health, ammo, etc) to variables.

09/Feb/2013
Fixed "jump while falling" and "sprint/jump" bug. Now the player moves slowly in his target direction if he tries moving in mid-air.

08/Feb/2013
Version 0.3
Fixed a bug on validatePlayerPosition() when running on Z axis towards a corner (and as a bonus, fixed algorythm and optimized the number of times it was called). Added jumping and added a method to renderQuads with a chosen color (useful for seeing floors only, for example).

06/Feb/2013
Fixed "running against a wall" problem. Fixed maximum speed bug (using W+D would make you go faster than you should). Set speed-related info to variables.

05/Feb/2013
"Look-around system" tweaked, now smoother and configurable. Mouse hidden. Also fixed a slight bug with how high a character was able to climb without jumping.

04/Feb/2013
Version 0.2
Turned the game into a half FPS. You can now look around the map with your mouse and sprint/walk around.

04/Feb/2013
Version 0.1
After extensive google search, developed algorythms to keep player from going over textures and making him able to climb up ramps and stuff.

03/Feb/2013
Version 0.0
Right now, the game is in alpha version and i'm still tweaking the game engine and figuring out how to make the maps from a regular file. After that, ill turn the game into an FPS. After that, ill try and make it work in a network. Finally, i'll add the character models (no idea how to do it yet) and the game can go into beta.

Wednesday, June 27, 2012

Installation Instructions

Windows:
Download the .exe file from here:
http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
and install it.
Now, just download the xDoom Launcher and run it with Java.

Linux:
Download the .tar.gz file from here:
http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
and extract it into the desired folder.
Then use the console to access your home/user folder and add the following line to the end of the file .profile (use Gedit, for example):
export PATH=$PATH:/usr/java/jre1.7.0_21/bin/
Remember to change the path to wherever you installed Java. Now, just download the xDoom Launcher and run it with:
java -jar xDoomLauncher.jar

Mac:
---