Tera Shock Server Emu!!

Page 11 of 15 FirstFirst ... 3456789101112131415 LastLast
Results 151 to 165 of 223
  1. #151
    Valued Member narcis96 is offline
    MemberRank
    Jun 2016 Join Date
    Timisoara,RomanLocation
    129Posts

    Re: Tera Shock Server Emu!!

    Hi guys,

    I'll write here what I think the state of the TERA private server (emulator) dev community is.

    So,
    @Luciole working on a c# version, right?
    @P5yl0 is working on a newer version of his emulator, if i it understand correctly
    @wankers14 worked on a project, idk the state of hi's project atm.
    @clofriwen tried to write a server in C, idk where he's at these days.
    @narcis96 i'm working on my Skylake project , (as i have time)
    @OtherTeraDevs sorry if a left anyone out.
    @Anonymous <- there is an other guy i know who is working very hard for quite some time now on a private TERA server. I think he has the most potential, but idk about what hes gonna do with it when done (in terms of open source or eaven publishing a compiled verision.), we'll see.

    In my endeavor with this project i've learned a lot about TERA and the requirements of making a private server (emulator) for it.
    A LOT of data necessary for a successful server dev is missing from the TERA Client Data Center(DC).
    This data is server side only and very hard to come by.
    But luckily i've managed to gather most of the missing data , this data needs to be restored manually and that alone is a lot of work.
    I have my own theories and ideas on the right architecture or language to write it with/in , but thats my opinion.

    Atm i'm thinkg to make my src public, but idk...

    Please let me know what's your thought on this subject.
    @P5yl0 @Luciole @wankers14 @clofriwen @OtherTeraDevs

    Thanks.

    PS. Feel free to DM me for questions.
    Last edited by narcis96; 08-04-20 at 12:40 PM.

  2. #152
    Apprentice gatitoxp is offline
    MemberRank
    Jan 2015 Join Date
    19Posts

    Re: Tera Shock Server Emu!!

    I think that the best thing is to make a discord and unite us all to make a stable and updated server. without stamina with the latest costumes, pet frames and most importantly, classes. What is the most important. a server where you can play both offline and online with friends in hamachi for example. to make dungeons
    It is very boring to create a server without brawlers without ninjas without everything current. I promise to participate in some way in a project of tera because I love this game, what I hate are the original servers of enmasse or gameforge that already their economy is broken and it is difficult to get the things you want. that's why I would rather have my own server and enjoy it alone or with friends on a hamachi-type lan network.

  3. #153
    Valued Member Master2012 is online now
    MemberRank
    Nov 2013 Join Date
    145Posts

    Re: Tera Shock Server Emu!!

    https://ibb.co/VW3sHqL

    Enter Game work now with client 9203 but we still need find someone who have this parsers to get last Data files!
    We have parser but this will keep much time to update!

  4. #154
    Apprentice gatitoxp is offline
    MemberRank
    Jan 2015 Join Date
    19Posts

    Re: Tera Shock Server Emu!!

    We can divide the work, people who program the skills. others who compile what is missing. others to draw and make new artistic designs. and 3d modeling to create new clothes. A single person programming this is going to last a long time.

  5. #155
    Proficient Member Luciole is offline
    MemberRank
    Dec 2015 Join Date
    上海-ShanghaiLocation
    162Posts

    Re: Tera Shock Server Emu!!

    @narcis96 I'm working on a 27.07 (Classic server EU version) based on the Java version. A lot of changes have been made, i'll make a changelog soon when i'll have time.

    I'm agree with things there:
    - Make a TERA dev discord (or whatever) with only dev people inside, for help, share.
    - A lot of data is missing from the client (NPC spawns, loots, ...)

  6. #156
    Valued Member narcis96 is offline
    MemberRank
    Jun 2016 Join Date
    Timisoara,RomanLocation
    129Posts

    Re: Tera Shock Server Emu!!

    When i'm talking about missing data, i'm talking about missing files and missing fields.
    For eg. this is the actual skill data structure, (server side form)
    https://pastebin.com/MwrNGYmM

    https://www.dailymotion.com/video/x7t6x23
    https://www.dailymotion.com/video/x7t6x4w
    Last edited by narcis96; 09-04-20 at 09:53 AM.

  7. #157
    Valued Member Master2012 is online now
    MemberRank
    Nov 2013 Join Date
    145Posts

    Re: Tera Shock Server Emu!!

    @narcis96 can you upload pls your files?

  8. #158
    Valued Member narcis96 is offline
    MemberRank
    Jun 2016 Join Date
    Timisoara,RomanLocation
    129Posts

    Re: Tera Shock Server Emu!!

    My version is still under heavy dev. Its not playable.
    If there are any c++ devs who want to collab dm me.

  9. #159
    Member wankers14 is offline
    MemberRank
    Oct 2012 Join Date
    FranceLocation
    81Posts

    Re: Tera Shock Server Emu!!

    @narcis96 hi i'm still working on my project, updated regularly (dungeon, quest, guild, party, mail, broker, drops, and many other features i'm currently on skills)

    some features :





    Last edited by wankers14; 12-04-20 at 08:34 PM.

  10. #160
    Valued Member narcis96 is offline
    MemberRank
    Jun 2016 Join Date
    Timisoara,RomanLocation
    129Posts

    Re: Tera Shock Server Emu!!

    Good Job!
    I have 2 questions:
    -What would the benchmarks say about your code, in terms of speed?
    -How many concurrent players will your server be able to support before hitting server created lag?

  11. #161
    Member wankers14 is offline
    MemberRank
    Oct 2012 Join Date
    FranceLocation
    81Posts

    Re: Tera Shock Server Emu!!

    @narcis96
    So I develop on aion for 10 years I am inspired, the code is in Java, mysql database, the data in XML I optimize the code for speed. Starting on a machine with 4 cores 4 threads and 16gb of ram a hundred people can all play in perfect stability. I coded the channel system in play to help a lot with the stability I had no choice but to add the channel system (a channel contains these own mobs, players, gathers, game object, drops, servant. ..) moreover the channel system is used for the dungeons on tera hence the importance of having it in place. Just for dungeons I have an instance engine to script them.

    some exemple :

    for mysql DAO

    Code:
    @Override
        public void createPlayer(Player player) {
            WorldPosition pos = player.getWorldPosition();
            PlayerAppearance app = player.getPlayerAppearance();
            PreparedStatement st = DB
                    .prepareStatement("INSERT INTO players(`id`, `name`, race, gender, class, level, exp, rested_exp, max_rested_exp, hp, mp, creation_time, last_online, description, settings, map_id, x, y, z, h, channel," +
                            " account_id, awaken_level, laurel, achievment_points, fatigue, world_map, world_guard, arena_id, delete_time, appearance, appearance2, details, shape, ban, ban_time, new_player, change_name) " +
                            "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
    
            try {
                st.setInt(1, player.getId());
                st.setString(2, player.getName());
                st.setString(3, player.getRace().toString());
                st.setString(4, player.getGender().toString());
                st.setString(5, player.getPlayerClass().toString());
                st.setInt(6, player.getLevel());
                st.setLong(7, player.getExperience());
                st.setLong(8, player.getCurrentRestedExperience());
                st.setLong(9, player.getMaxRestedExperience());
                st.setLong(10, player.getCurrentStats().getHp());
                st.setLong(11, player.getCurrentStats().getMp());
                st.setTimestamp(12, player.getCreationTime());
                st.setTimestamp(13, player.getLastOnlineTime());
                st.setString(14, player.getDescription());
                st.setBytes(15, player.getUserSettings());
                st.setInt(16, pos.getMapId());
                st.setFloat(17, pos.getX());
                st.setFloat(18, pos.getY());
                st.setFloat(19, pos.getZ());
                st.setInt(20, pos.getHeading());
                st.setInt(21, pos.getChannelId());
                st.setInt(22, player.getAccount().getId());
                st.setInt(23, player.getAwakenLevel());
                st.setString(24, player.getLaurel().toString());
                st.setInt(25, player.getAchievmentPoints());
                st.setInt(26, player.getGatherCraftPoints());
                st.setInt(27, pos.getWorldMapWorldId());
                st.setInt(28, pos.getWorldMapGuardId());
                st.setInt(29, pos.getAreaNameId());
                st.setTimestamp(30, player.getDeletionTime());
                st.setBytes(31, app.getAppearance());
                st.setBytes(32, app.getAppearance2());
                st.setBytes(33, app.getDetails());
                st.setBytes(34, app.getShape());
                st.setBoolean(35, player.isBan());
                st.setTimestamp(36, player.getBanTime());
                st.setBoolean(37, player.isNewPlayer());
                st.setBoolean(38, player.isNamechange());
                st.executeUpdate();
            } catch (SQLException e) {
                log.error("Can't inser player", e);
            } finally {
                DB.close(st);
            }
        }
    for xml data :

    Code:
    <item_template id="17" name="Boucle d'oreille de roue citadine personnelle" coolTime="0" category="EARRING" level="10" requiredLevel="10" rank="0" maxStack="1" rareGrade="3" requiredEquipmentType="NO_COMBAT" combatItemType="EQUIP_ACCESSORY" boundType="NONE" coolTimeGroup="0" linkCrestId="0" linkCustomizingId="0" linkEquipmentId="40113300" linkLookInfoId="0" linkPetAdultId="0" linkPetOrbId="0" linkSkillId="0" linkSocialId="0" linkEnchantId="0" mix_id="0" masterpieceRate="0.0" requiredClass="All" sellPrice="850" buyPrice="8500" slotLimit="0" sortingNumber="9" unidentifiedItemGrade="0" linkPassivityId="190612" linkMasterpiecePassivityId="0" action_value="0" expire_day="0">
        <item_stats balance="3" def="7" impact="0" maxAtk="0" minAtk="0" passivity="0" />
      </item_template>
    for my channel :

    Code:
    package com.ryzen.game.model.channel;
    
    import com.ryzen.game.instance.handlers.InstanceHandler;
    import com.ryzen.game.model.AbstractTeraModel;
    import com.ryzen.game.model.visible.creature.Creature;
    import com.ryzen.game.model.visible.creature.Monster;
    import com.ryzen.game.model.visible.door.Door;
    import com.ryzen.game.model.visible.drop.DropItem;
    import com.ryzen.game.model.visible.workobject.WorkObject;
    import com.ryzen.game.model.visible.gather.Gather;
    import com.ryzen.game.model.visible.player.Player;
    import javolution.util.FastList;
    import javolution.util.FastMap;
    
    import java.util.List;
    import java.util.Map;
    
    public class Channel extends AbstractTeraModel {
    
        private List<Player> players = new FastList<>();
        private List<Monster> monsters = new FastList<Monster>();
        private  List<Creature> npcs = new FastList<Creature>();
        private List<Gather> gathers = new FastList<Gather>();
        private List<DropItem> drops = new FastList<DropItem>();
        private List<WorkObject> workObject = new FastList<WorkObject>();
        private List<Door> doors = new FastList<Door>();
    
        private int mapId;
        private boolean isDungeon;
    
        public Channel(final Integer id) {
            super(id);
        }
    
        public void removePlayer(final Player player) {
            this.players.remove(player);
        }
    
        public void addPlayer(final Player player) {
            this.players.add(player);
        }
    
        public void setPlayer(List<Player> pls) {
            this.players = pls;
        }
    
        public List<Player> getPlayers() {
            return players;
        }
    
        public void addMonster(final Monster monster) {
            this.monsters.add(monster);
        }
    
        public List<Monster> getMonsters() {
            return monsters;
        }
    
        public void setNpcs(List<Creature> npc) {
            this.npcs = npc;
        }
    
        public void addNpc(Creature npc) {
            this.npcs.add(npc);
        }
    
        public List<WorkObject> getWorkObects() {
            return workObject;
        }
    
        public void setWorkObjects(List<WorkObject> workObjects) {
            this.workObject = workObjects;
        }
    
        public void addWorkObject(WorkObject wo) {
            this.workObject.add(wo);
        }
    
        public List<Creature> getNpcs() {
            return npcs;
        }
    
        public void addGather(final Gather gather) {
            this.gathers.add(gather);
        }
    
        public List<Gather> getGathers() {
            return gathers;
        }
    
        public void setGathers(List<Gather> gather) {
            this.gathers = gather;
        }
    
    
        public List<DropItem> getDrops() {
            return drops;
        }
    
        public void setDrops(List<DropItem> drops) {
            this.drops = drops;
        }
    
    
        public void setMapId(int mapId) {
            this.mapId = mapId;
        }
    
        public int getMapId() {
            return mapId;
        }
    
        private InstanceHandler instanceHandler;
    
        public final InstanceHandler getInstanceHandler() {
            return instanceHandler;
        }
    
        public final void setInstanceHandler(InstanceHandler instanceHandler) {
            this.instanceHandler = instanceHandler;
        }
    
        public List<Door> getDoors() {
            return doors;
        }
    
        public void setDoors(List<Door> doors) {
            this.doors = doors;
        }
    
        public void addDoor(Door door) {
            this.doors.add(door);
        }
    
        public boolean isDungeon() {
            return isDungeon;
        }
    
        public void setDungeon(boolean dungeon) {
            isDungeon = dungeon;
        }
    }
    Best regards
    Last edited by wankers14; 13-04-20 at 02:38 PM.

  12. #162
    Valued Member narcis96 is offline
    MemberRank
    Jun 2016 Join Date
    Timisoara,RomanLocation
    129Posts

    Re: Tera Shock Server Emu!!

    I see. Great job!
    Have you started on the skill system for TERA?
    If so, how far have you gone?

  13. #163
    Member wankers14 is offline
    MemberRank
    Oct 2012 Join Date
    FranceLocation
    81Posts

    Re: Tera Shock Server Emu!!

    Just for the moment i have create all packets and i have create template

  14. #164
    Valued Member narcis96 is offline
    MemberRank
    Jun 2016 Join Date
    Timisoara,RomanLocation
    129Posts

    Re: Tera Shock Server Emu!!

    The skill system along with the abnormality system makes TERA , TERA.
    These 2 systems, specially the skill system, are the back bone of the server, they are involved in most of the design decisions as they are most of the CPU load, getting them right is crucial for a successful server.
    Good Luck! And keep up the good work!

  15. #165
    Valued Member karyzir is offline
    MemberRank
    Jul 2013 Join Date
    RussiaLocation
    108Posts

    Re: Tera Shock Server Emu!!

    We need discord server to coordinate tera stuff, works, not for money profit, right now Tera Emu`s in rudimentary state, we dont have client tools for modding, but we have leaked UE3 sources lol) I rly want make classic server(Browler included) but bored doing myself(



Advertisement